201709-2 公共钥匙盒
- C++
- 总结
本题链接:201709-2 公共钥匙盒
本博客给出本题截图:
C++
#include <iostream> #include <algorithm> using namespace std; const int N = 1010; int n, m; int q[N]; struct Op { int tm, type, id; bool operator< (const Op& t) const { if (tm != t.tm) return tm < t.tm; if (type != t.type) return type > t.type; return id < t.id; } }op[N * 2]; int main() { cin >> n >> m; int k = 0; while (m -- ) { int id, start, len; cin >> id >> start >> len; op[k ++ ] = {start, 0, id}; op[k ++ ] = {start + len, 1, id}; } sort(op, op + k); for (int i = 1; i <= n; i ++ ) q[i] = i; for (int i = 0; i < k; i ++ ) { int id = op[i].id; if (!op[i].type) { for (int j = 1; j <= n; j ++ ) if (q[j] == id) { q[j] = 0; break; } } else { for (int j = 1; j <= n; j ++ ) if (!q[j]) { q[j] = id; break; } } } for (int i = 1; i <= n; i ++ ) cout << q[i] << ' '; return 0; }
总结
水题,不解释