原题连接
#include<bits/stdc++.h>
using namespace std;
set<int>borrow[10500];
set<int>repay[10500];
int main(){
int n, k, w, s, c;
cin >>n >>k;
int hash[n+1];
for(int i = 1; i < n+1; i++){
hash[i] = i;
}
while(k--){
cin >>w >>s >>c;
borrow[s].insert(w);
repay[s+c].insert(w);
}
// 开始一秒一秒 查!
for(int i = 1; i < 10500; i++){
while(repay[i].size() != 0) {//先看看有没有老师要换钥匙
set<int>::iterator it = repay[i].begin();
repay[i].erase(it);
int j = 1;
while( hash[j] != 0) j++;
hash[j] = *it ; //当有的时候 循环hash 见缝插针
}
// 看看有没有老师要借钥匙 如法炮制
while(borrow[i].size() != 0){
set<int>::iterator it = borrow[i].begin();
borrow[i].erase(it);
int v = 1;
while( hash[v] != *it) v++;
hash[v] = 0 ;
}
}
for(int i = 1; i < n+1; i++){
cout << hash[i]<<" ";
}
return 0;
}