比赛 |
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;
}