比赛 20250904开学热身赛 评测结果 TTTTT
题目名称 内存分配 最终得分 0
用户昵称 陆晨洗 运行时间 9.989 s
代码语言 C++ 内存使用 3.36 MiB
提交时间 2025-09-04 21:59:10
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,ans1,ans2;
int a[1000010]={0};
int b[1000010]={0};
int c[10010][10]={0};int cl,cr;

void jr(int x,int y,int z)
{
    int i;
    for(i=y;i<=y+z-1;i++)
    {
        a[i]=max(a[i],x);
        b[i]=0;
    }
    return;
}
void js(int x)
{
    int i;
    for(i=n;i>=1;i--)
    {
        if(a[i]<=x)
        {
            a[i]=0;
            b[i]=b[i+1]+1;
        }
        else
        {
            a[i]=a[i]-x;
        }
    }
}
int main()
{
    freopen("memory2.in","r",stdin);
    freopen("memory.out","w",stdout);
    int d,t,m,p,i,j;
    cin>>n;
    ans2=0;cl=1;cr=0;t=-1;
    for(i=1;i<=n;i++)
    {
        b[i]=n-i+1;
    }
    for(ans1=1;;ans1++)
    {
        if(cr-cl<0)
        {
            if(t==-1)
            {
                cin>>t>>m>>p;
                if(t==ans1)
                {
                    js(1);
                }
                js(t-ans1);
                ans1=t;
            }
            if(t==0&&m==0&&p==0)
            {
                break;
            }
            for(i=1;i<=n;i++)
            {
                if(b[i]>=m)
                {
                    jr(p,i,m);
                    break;
                }
                if(b[i]!=0)
                {
                    i=i+b[i]-1;
                }
            }
            if(i>=n)
            {
                ans2++;cr++;
                c[cr][1]=t;
                c[cr][2]=m;
                c[cr][3]=p;
            }
            t=-1;
        }
        else
        {
            if(t==-1)
            {
                cin>>t>>m>>p;
            }
            js(1);
            for(i=1;i<=n;i++)
            {
                if(b[i]>=c[cr][2])
                {
                    cl++;
                    jr(c[cr][3],i,c[cr][2]);
                    break;
                }
                if(b[i]!=0)
                {
                    i=i+b[i]-1;
                }
            }
            if(ans1==t)
            {
                for(i=1;i<=n;i++)
                {
                    if(b[i]>=m)
                    {
                        jr(p,i,m);
                        break;
                    }
                    if(b[i]!=0)
                    {
                        i=i+b[i]-1;
                    }
                }
                if(i>=n)
                {
                    ans2++;cr++;
                    c[cr][1]=t;
                    c[cr][2]=m;
                    c[cr][3]=p;
                }
                t=-1;
            }
        }
    }
    for(i=1;i<=n;i++)
    {
        if(a[i]>d)
        {
            d=a[i];
        }
    }
    cout<<ans1+d-1<<endl;
    cout<<ans2;
    return 0;
}