#公共钥匙盒
直接上代码:
#include<iostream>
#include<queue>
#define N 10100
using namespace std;
int ti[N];
int main(){
int n,k,*time=ti,t=0,max=0;
cin>>n>>k;
int a[n],num[k],b[k],e[k];
for(int i=0;i<k;i++){
cin>>num[i]>>b[i]>>e[i];
e[i]+=b[i];
if(e[i]>max) max=e[i];
ti[e[i]]=1;
ti[b[i]]=1;
}
for(int i=0;i<n;i++) a[i]=i+1;
while(max--){
t++;
time++;
if(*time==1){
queue<int> q;
queue<int> p;
//排队
for(int i=0;i<k;i++){
if(e[i]==t){
if(q.empty()) q.push(num[i]);
else{
int flag=0;
for(int j=0;j<q.size();j++){
int x=q.front();
q.pop();
if(num[i]<x){
q.push(num[i]);
flag++;
}
q.push(x);
}
if(flag==0) q.push(num[i]);
}
}
if(b[i]==t){
p.push(num[i]);
}
}
//放钥匙
while(!q.empty()){
for(int i=0;i<n;i++){
if(a[i]==0){
a[i]=q.front();
q.pop();
//cout<<"put"<<endl;
break;
}
}
}
//取钥匙
while(!p.empty()){
for(int i=0;i<n;i++){
if(a[i]==p.front()){
a[i]=0;
//cout<<"get"<<endl;
p.pop();
break;
}
}
}
}
}
for(int i=0;i<n;i++) cout<<a[i]<<' ';
return 0;
}
辛辛苦苦写完,程序没问题,然而超时。。。
我哭了。。。