AC码:
#include <cstring>
#include <string.h>
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <string>
#include <vector>
#define ll long long
#define PII pair<int, int>
#define MSI map<string,int>
#define TLE ios::sync_with_stdio(0),cin.tie(0)
#define mod 1000000007
const int INF = 0x3f3f3f3f;
using namespace std;
struct patient {
int w, s, c;
}pat[1005];
int seat[1005] = { 0 }, idx[1005] = { 0 };
int N, K;
bool cmp(patient a, patient b) {
if (a.s == b.s) return a.c < b.c;
else return a.s < b.s;
}
int main() {
cin >> N >> K;
for (int i = 0; i < K; i++)
cin >> pat[i].w >> pat[i].s >> pat[i].c;
sort(pat, pat + K, cmp);
int T[1005] = { 0 }, i = 0;
for (int i = 1; i <= N; i++)
seat[i] = i;
for (int t = pat[0].s; t <= 10200; t++) {
for (int j = 1; j <= N; j++) {
if (T[j] == t) for (int jj = 1; jj <= N; jj++)
if (seat[jj] == 0) {
// cout << " ru : " << j << " t: " << t << endl;
seat[jj] = j; //回来的护士入座
break;
}
}
while (pat[i].s == t && i < K) {
int w = pat[i].w, s = pat[i].s, c = pat[i].c;
for (int jj = 1; jj <= N; jj++) {
if (seat[jj] == w) {
// cout << w << " t: " << t << endl;
seat[jj] = 0; //护士离座
break;
}
}
T[w] = s + c;
i++;
}
}
for (int jj = 1; jj <= N; jj++) {
cout << seat[jj] << " ";
}
cout << endl;
}
/*
6 8
1 1 14
3 3 12
1 15 12
2 7 20
3 18 12
4 21 19
5 30 9
6 1 1
*/