#include <iostream>
#include <algorithm>
//#define debug
using namespace std;
class Node{
public:
int start;
int flag;
int key;
bool operator <(Node & node)const{
/* if(start == node.start){
if(flag == node.flag){
return key < node.key;
}else{
if(flag == 0){
return true;
}else{
return false;
}
}
}
return start < node.start;*/
return start == node.start ? key < node.key : start < node.start;
}
}node[1000 * 2];
int key[1001];
int main(){
int n,k,i,j,tmp,w,s,c,t;
cin >> n >> k;
for(i = 1;i <= n;i++)
key[i] = i;
for(i = 0;i < k;i++){
cin >> w >> s >> c;
node[2 * i].flag = 0;
node[2 *i].key = w;
node[2 *i].start = s;
node[2 *i + 1].flag = 1;
node[2 *i + 1].key = w;
node[2 *i + 1].start = s + c;
}
sort(node,node + 2 * k);
#ifdef debug
for(i = 0;i < 2 * k;i++){
cout << node[i].flag << " " << node[i].key<< " " << node[i].start<< " " << endl;
}
while(1);
#endif // debug
for(i = 0;i < 2 * k;){//自己写的40分是因为这里写错,没有考虑“同时间有借有还
//时,先处理还的
for(j = i;j < 2 * k && node[j].start == node[i].start;j++)
;
for(t = i;t < j;t++){
if(node[t].flag == 1){
int pos;
for(pos = 1;pos <= n && key[pos] != -1;pos++)
;
key[pos] = node[t].key;
}
}
for(t = i;t < j;t++){
if(node[t].flag == 0){
int pos;
for(pos = 1;pos <= n && key[pos] != node[t].key;pos++)
;
key[pos] = -1;
}
}
i = j;
}
for(i = 1;i <= n;i++ ){
if(i != 1)
cout << " ";
cout << key[i];
}
cout << endl;
return 0;
}
CCF 201709-2 公共钥匙盒
最新推荐文章于 2022-02-28 10:12:41 发布