比赛 20250904开学热身赛 评测结果 ATTTT
题目名称 内存分配 最终得分 20
用户昵称 汐汐很希希 运行时间 7.251 s
代码语言 C++ 内存使用 24.85 MiB
提交时间 2025-09-04 20:56:16
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e7,M=10010;
int n;
struct work
{
    int t,m,p,cd,inc;
}a[N];
int tl=0,cnt=0,sum=0;
bool vis[M],d[N];
int pd(int l)
{
    int cnt1=0,dizhi=0;
    for(int i=1;i<=n;i++){
        if(!d[i]&&dizhi==0) dizhi=i,cnt1++;
        else if(!d[i]) cnt1++;
        else if(d[i]) cnt1=0,dizhi=0;
        if(cnt1==l) return dizhi;
    }
    return 0;
}
int main()
{
    freopen("memory.in","r",stdin);
    freopen("memory.out","w",stdout);
    
    cin>>n;
    int t1,m1,p1,k=1;
    cin>>t1>>m1>>p1;
    while(t1!=0||m1!=0||p1!=0){
        a[k].t=t1,a[k].m=m1,a[k].p=p1,a[k].cd=0;
        cin>>t1>>m1>>p1;
        k++;
    }
    k--;
    queue<int> q;
    int i=1;
    while(sum<k){
        for(int ik=1;ik<=k;ik++){
            if(vis[ik]){
                a[ik].p--;
                if(a[ik].p<=0){
                    sum++;
                    vis[ik]=false;
                    for(int j=a[ik].cd;j<=a[ik].cd+a[ik].m-1;j++) d[j]=false;
                }
            }
        }
        if(!q.empty())
        {
            int f=q.front();
            int dz1=pd(a[f].m);
            if(dz1!=0){
                q.pop();
                vis[f]=true;
                a[f].inc=tl;
                a[f].cd=dz1;
                for(int j=dz1;j<=dz1+a[f].m-1;j++) d[j]=true;
            }
        }
        if(a[i].t==tl){
            int dz=pd(a[i].m);
            if(dz!=0){
                vis[i]=true;
                a[i].inc=tl;
                a[i].cd=dz;
                for(int j=dz;j<=dz+a[i].m-1;j++) d[j]=true;
            }else{
                q.push(i);
                cnt++;
            }
            i++;
        }
        tl++;
    }
    tl--;
    cout<<tl<<endl;
    cout<<cnt<<endl;
    return 0;
}