题目链接:http://118.190.20.162/view.page?gpid=T62
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
const int maxn=1000;
int n,k;
struct node{
int id;
int time;
int sign;
}a[maxn*2+10];
int b[maxn];
bool cmp(node a,node b){
if(a.time!=b.time){
return a.time<b.time;
}
else
{
if(a.sign!=b.sign){
return a.sign<b.sign;
} else{
return a.id<b.id;
}
}
}
int main() {
cin>>n>>k;
for(int i=1;i<=n;i++){
b[i]=i;
}
int w,s,c;
for(int i=0;i<k;i++){
cin>>w>>s>>c;
a[i*2].id=w;
a[i*2].time=s;
a[i*2].sign=1;
a[i*2+1].id=w;
a[i*2+1].time=s+c;
a[i*2+1].sign=-1;
}
sort(a,a+2*k,cmp);
for(int i=0;i<2*k;i++){
if(a[i].sign==1){
for(int j=1;j<=n;j++){
if(b[j]==a[i].id){
b[j]=0;
}
}
}
else{
for(int j=1;j<=n;j++){
if(b[j]==0){
b[j]=a[i].id;
break;
}
}
}
}
for(int i=1;i<=n;i++){
printf("%d%c",b[i],i==n?'\n':' ');
}
return 0;
}