# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
358619 | 2021-01-26T02:09:55 Z | mjhmjh1104 | Meteors (POI11_met) | C++17 | 1225 ms | 29696 KB |
#include <cstdio> #include <vector> #include <algorithm> using namespace std; long long tree[300006]; long long query(int x) { long long ret = 0; while (x > 0) { ret += tree[x]; x -= x & -x; } return ret; } void update_fenwick(int x, long long v) { while (x < 300006) { tree[x] += v; x += x & -x; } } void update(int l, int r, long long v) { update_fenwick(l, v); update_fenwick(r + 1, -v); } struct Query { int q; int l; int r; int m; }; int n, m, p[300006], q; vector<pair<pair<int, int>, int>> updates; vector<Query> queries; vector<int> o[300006]; int main() { scanf("%d%d", &n, &m); for (int i = 0; i < m; i++) { int t; scanf("%d", &t); o[t - 1].push_back(i); } for (int i = 0; i < n; i++) scanf("%d", p + i); scanf("%d", &q); for (int i = 0; i < q; i++) { int a, b, x; scanf("%d%d%d", &a, &b, &x); a--, b--; updates.push_back({ { a, b }, x }); } for (int i = 0; i < n; i++) queries.push_back(Query{ i, 0, 300002, 150000 }); for (int t = 0; t < 20; t++) { sort(queries.begin(), queries.end(), [](const Query &a, const Query &b) { return a.m < b.m; }); fill(tree, tree + 300006, 0); int k = 0; for (int i = 0; i < q; i++) { while (k < n && i > queries[k].m) { if (queries[k].l < queries[k].r) { long long sum = 0; for (auto &j: o[queries[k].q]) sum += query(j + 1); if (sum >= p[queries[k].q]) queries[k].r = queries[k].m; else queries[k].l = queries[k].m + 1; queries[k].m = (queries[k].l + queries[k].r) / 2; } k++; } if (updates[i].first.first <= updates[i].first.second) update(updates[i].first.first + 1, updates[i].first.second + 1, updates[i].second); else update(updates[i].first.first + 1, m, updates[i].second), update(1, updates[i].first.second + 1, updates[i].second); } for (; k < n; k++) if (queries[k].l < queries[k].r) { long long sum = 0; for (auto &j: o[queries[k].q]) sum += query(j + 1); if (sum >= p[queries[k].q]) queries[k].r = queries[k].m; else queries[k].l = queries[k].m + 1; queries[k].m = (queries[k].l + queries[k].r) / 2; } } sort(queries.begin(), queries.end(), [](const Query &a, const Query &b) { return a.q < b.q; }); for (auto &i: queries) { if (i.l >= 300002) puts("NIE"); else printf("%d\n", i.l + 1); } }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 16 ms | 9708 KB | Output is correct |
2 | Correct | 16 ms | 9708 KB | Output is correct |
3 | Correct | 16 ms | 9708 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 16 ms | 9708 KB | Output is correct |
2 | Correct | 16 ms | 9836 KB | Output is correct |
3 | Correct | 17 ms | 9836 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 108 ms | 11748 KB | Output is correct |
2 | Correct | 233 ms | 13284 KB | Output is correct |
3 | Correct | 147 ms | 12516 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 169 ms | 12404 KB | Output is correct |
2 | Correct | 175 ms | 12388 KB | Output is correct |
3 | Correct | 222 ms | 13288 KB | Output is correct |
4 | Correct | 61 ms | 11240 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 135 ms | 11772 KB | Output is correct |
2 | Correct | 233 ms | 13416 KB | Output is correct |
3 | Correct | 200 ms | 10980 KB | Output is correct |
4 | Correct | 155 ms | 13028 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 180 ms | 11796 KB | Output is correct |
2 | Correct | 215 ms | 12524 KB | Output is correct |
3 | Correct | 120 ms | 11876 KB | Output is correct |
4 | Correct | 226 ms | 13412 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1225 ms | 29696 KB | Output is correct |
2 | Incorrect | 746 ms | 22792 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1205 ms | 28756 KB | Output is correct |
2 | Incorrect | 724 ms | 21328 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |