模拟死活推不明白了,求dalao捞捞
#include<iostream>
using namespace std;
/*
10 4
1
2 1 4 2 5
3
1 2 4
7
3 2 2 1 3 3 2
9
1 4 2
*/
int T,n,k,ans;
struct reader{
int list,want[1001],last[1001],tick,nextTick;
bool vis[1001];
}r[101];
int usedBy[1001]={};
int reading[1001]={};
int main(){
while(cin>>T>>n){
k=0;
ans=0;
for(int i=1;i<=1000;i++){
usedBy[i]=0;
reading[i]=0;
}
for(int i=1;i<=100;i++)
for(int j=1;j<=1000;j++)
r[i].vis[j]=0;
for(int i=1;i<=n;i++){
cin>>r[i].tick>>r[i].list;
r[i].nextTick=r[i].tick;
for(int j=1;j<=r[i].list;j++){
cin>>r[i].want[j];
cin>>r[i].last[r[i].want[j]];
}
}
for(int t=r[1].tick;t<T;t++){
for(int i=1;i<=n;i++){
if(t<r[i].nextTick) continue;
usedBy[reading[i]]=0;
reading[i]=0;
for(int j=1;j<=r[i].list;j++){
if(r[i].vis[j]) continue;
if(usedBy[r[i].want[j]]) continue;
r[i].nextTick+=r[i].last[r[i].want[j]];
reading[i]=r[i].want[j];
usedBy[r[i].want[j]]=i;
r[i].vis[j]=1;
ans++;
// cout<<t<<' '<<i<<' '<<r[i].want[j]<<endl;
break;
}
}
}
cout<<ans<<endl;
}
return 0;
}