#include<bits/stdc++.h>
using namespace std;
const int N = 10010;
struct node {
int id;
int type;
int time;
} a[N];
int q[N];
bool compare(node x, node y) {
if (x.time != y.time) return x.time < y.time;
if (x.type != y.type) return x.type > y.type;
if (x.id != y.id) return x.id < y.id;
}
int main() {
int n, k;
scanf("%d%d", &n, &k);
for (int i = 1; i <= n; i++) {
q[i] = i;
}
int pos = 0;
while (k--) {
int id, start, length;
scanf("%d%d%d", &id, &start, &length);
a[pos++] = {id, 0, start}; //取钥匙
a[pos++] = {id, 1, start + length}; //换钥匙
}
sort(a, a + pos,compare);
for (int i = 0; i < pos; i++) {
if (a[i].type == 0) {
for (int j = 1; j <= n; j++) {
if (a[i].id == q[j]) {
q[j] = 0;
break;
}
}
} else {
for (int j = 1; j <= n; j++) {
if (!q[j]) {
q[j] = a[i].id;
break;
}
}
}
}
for(int i=1;i<=n;i++) printf("%d ",q[i]);
return 0;
}
公共钥匙盒
最新推荐文章于 2024-09-26 22:55:54 发布
这段代码展示了一个C++程序,用于解决一个钥匙交换的问题。程序读取输入的钥匙ID、开始时间和长度,然后根据特定规则进行钥匙的取和换操作。整个过程通过排序和遍历数组来实现,确保在指定时间内正确地分配钥匙。
摘要由CSDN通过智能技术生成