Submission #660908

#TimeUsernameProblemLanguageResultExecution timeMemory
660908rukashiiMeteors (POI11_met)C++17
74 / 100
993 ms52740 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int maxn = 3e5 + 2; int n, m, a[maxn], q, tree[maxn], ans[maxn], bad[maxn]; vector <tuple<int, int, int>> query; vector <int> st[maxn], check[maxn]; pair <int, int> b[maxn]; void update(int pos, int val) { for (int i = pos; i <= m; i += (i & (-i))) { tree[i] += val; } } int get(int pos) { int ret = 0; for (int i = pos; i >= 1; i -= (i & (-i))) { ret += tree[i]; } return ret; } void query_apply(int i) { auto [u, v, f] = query[i - 1]; if (u <= v) { update(u, f); update(v + 1, -f); } else { update(1, f); update(v + 1, -f); update(u, f); } } signed main() { ios::sync_with_stdio(0); cin.tie(0); memset(ans, -1, sizeof(ans)); memset(bad, -1, sizeof(bad)); //freopen("input.inp", "r", stdin); //freopen("output.out", "w", stdout); cin >> n >> m; for (int i = 1, t; i <= m; i++) { cin >> t; st[t].push_back(i); } for (int i = 1; i <= n; i++) cin >> a[i]; cin >> q; for (int i = 1; i <= q; i++) { int l, r, w; cin >> l >> r >> w; query.push_back({l, r, w}); } for (int i = 1; i <= n; i++) { b[i] = {1, q + 1}; } int cnt = n; while (1) { bool kt = 0; memset(tree, 0, sizeof(tree)); for (int i = 1; i <= q; i++) check[i].clear(); for (int i = 1; i <= n; i++) { auto [l, r] = b[i]; if (l < r) { int mid = (l + r) / 2; check[mid].push_back(i); kt = 1; } } if (!kt) break; for (int i = 1; i <= q; i++) { query_apply(i); for (int p : check[i]) { int &l = b[p].first, &r = b[p].second; int mid = (l + r) / 2; int sum = 0; for (int child : st[p]) { sum += get(child); } if (sum < a[p]) { l = mid + 1; } else { r = mid; } } } } for (int i = 1; i <= n; i++) if (b[i].second <= q) cout << b[i].second << '\n'; else cout << "NIE\n"; }

Compilation message (stderr)

met.cpp: In function 'int main()':
met.cpp:86:6: warning: unused variable 'cnt' [-Wunused-variable]
   86 |  int cnt = n;
      |      ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...