#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct Att
{
int num,take_time,return_time;
};
bool take_timeS(Att a,Att b)
{
return (a.take_time<b.take_time);
}
bool return_timeS(Att a,Att b)
{
return (a.return_time<b.return_time);
}
int main()
{
vector<Att> att1;
vector<Att> att2;
vector<int> key;
vector<int> return_box;
int n,k;
cin>>n>>k;
for(int i=0;i<n;i++)
{
key.push_back(i+1);
}
for(int i=0;i<k;i++)
{
Att ex;
cin>>ex.num>>ex.take_time>>ex.return_time;
ex.return_time+=ex.take_time;
att1.push_back(ex);
}
sort(att1.begin(),att1.end(),take_timeS);
for(int i=0;i<k;i++)
{
Att ex;
ex.num=att1[i].num;ex.return_time=att1[i].return_time;ex.take_time=att1[i].take_time;
att2.push_back(ex);
}
sort(att1.begin(),att1.end(),return_timeS);
//cout<<att1[0].return_time<<" "<<att2[0].take_time<<endl;
int count2=0,count1=0;
//cout<<att1[k-1].return_time<<" "<<att2[k-1].take_time<<endl;
for(int i=att2[0].take_time;i<=att1[k-1].return_time;i++)
{
// cout<<"i:"<<i<<endl;
while(i>=att1[count1].return_time&&count1<k)
{
if(i==att1[count1].return_time)
{
return_box.push_back(att1[count1].num);
}
count1++;
// cout<<"count1:"<<count1<<endl;
}
sort(return_box.begin(),return_box.end());
for(int j=0,jj=0;jj<return_box.size()&&j<n;j++)
{
if(key[j]==0)
{
key[j]=return_box[jj];
//cout<<"还回:"<<key[j]<<endl;
jj++;
}
}
return_box.clear();
while(i>=att2[count2].take_time)
{
if(i==att2[count2].take_time)
{
int N=att2[count2].num;
for(int j=0;j<n;j++)
{
if(key[j]==N)
{
key[j]=0;
// cout<<"取:"<<N<<endl;
break;
}
}
}
count2++;
//cout<<"count2:"<<count2<<endl;
}
}
for(int i=0;i<n;i++)
cout<<key[i]<<" ";
}
csp 20170903
最新推荐文章于 2021-02-16 11:54:37 发布