公共钥匙盒(第11次CCF计算机软件能力认证)
link
将用操作和还操作分开进行排序
#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
int n, m, k;
int a[N];
struct People{
int st, id, type;
bool operator < (const People &W){
if(st != W.st) return st < W.st;
if(type != W.type) return type > W.type; //还操作在前
return id < W.id;
}
}p[N * 2];
signed main(){
cin >> n >> k;
for(int i = 1; i <= n; ++i) a[i] = i;
for(int i = 0; i < k; ++i){
int st, id, len; cin >> id >> st >> len;
p[m++] = {st, id, 0};
p[m++] = {st + len, id, 1};
}
sort(p, p + m);
for(int i = 0; i < m; ++i){
int id = p[i].id, type = p[i].type;
if(type){
for(int i = 1; i <= n; ++i){
if(a[i] == 0){
a[i] = id;
break;
}
}
}else{
for(int i = 1; i <= n; ++i){
if(a[i] == id){
a[i] = 0;
break;
}
}
}
}
for(int i = 1; i <= n; ++i)
cout << a[i] << " ";
return 0;
}

浙公网安备 33010602011771号