比赛 20250904开学热身赛 评测结果 WEWEE
题目名称 内存分配 最终得分 0
用户昵称 zhyn 运行时间 0.519 s
代码语言 C++ 内存使用 3.67 MiB
提交时间 2025-09-04 21:02:52
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define maxn 10000
#define ll long long

ll n;
struct node{
	int t,m,p;
	int a,b;
};

node num[maxn];
int k[maxn][3];
int q[maxn];
int ti[maxn][10];
int l=1,r=1,cnt=0,sum=1;
ll ans=0;

bool col(int i){
	bool flag=true;
	for(int j=1;j<=sum;j++){
				if(k[j][2]>=num[i].m){
					k[j][0]=k[j][0]+num[i].m;
					k[j][2]-=num[i].m;
					num[i].a=k[j][0],num[i].b=k[j][0]+num[i].m-1;
					for(int s=1;;s++){
						if(ti[i+num[i].t-1][s]!=0){
							ti[i+num[i].t-1][s]=i;
							break;
						}
					}
					flag=false;
					break;
				}
			}
			return flag;
}


int main(){
	
	freopen("memory.in","r",stdin);
	freopen("memory.out","w",stdout);
	
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	cin>>n;
	k[1][0]=1,k[1][1]=n,k[1][2]=n;
	
	for(int t,m,p;;){
		cin>>t>>m>>p;
		if(t==0&&m==0&&p==0){
			break;
		}
		cnt++;
		num[cnt].t=t,num[cnt].m=m,num[cnt].p=p;
	}
	
	for(int i=1;;i++){
		if(i>=cnt&&l==r){
			cout<<i<<" "<<ans;
			break;
		}
		bool flag=true;
		for(int s=1;;s++){
			if(ti[i][s]==0){
				break;
			}
			int v=ti[i][s];
			sum++;
			k[sum][0]=num[s].a,k[sum][1]=num[s].b,k[sum][2]=num[s].m;
		}
		for(int j=l;l!=r;j++){
			if(col(q[j])){
				l++;
			}
			else{
				break;
			}
		}
		if(i>cnt){
			continue;
		}
		for(int j=1;j<=sum;j++){
			if(k[j][2]>=num[i].m){
				num[i].a=k[j][0],num[i].b=k[j][0]+num[i].m-1;
				k[j][0]+=num[i].m;
				
				k[j][2]-=num[i].m;
				for(int s=1;;s++){
					if(ti[i+num[i].t-1][s]!=0){
						ti[i+num[i].t-1][s]=i;
						break;
					}
				}
				flag=false;
				break;
			}
			
		}
		if(flag){
			q[r]=i;
			r++;
			ans++;
		}
	}
	
	
	
	
	
	cout<<ans;
	
	
	
	return 0;
}