Submission #1213722

#TimeUsernameProblemLanguageResultExecution timeMemory
1213722Trn115Meteors (POI11_met)C++20
24 / 100
102 ms22160 KiB
#include <bits/stdc++.h> #define unsigned long long #define fi first #define se second #define all(v) v.begin(), v.end() using namespace std; using pii = pair<int, int>; struct Fenwick { int n; vector<int> bit; Fenwick() = default; Fenwick(int n) { this->n = n; bit.assign(n + 1, 0); } void add(int p, int x) { if (p == 0) return; for (; p <= n; p += p&-p) bit[p] += x; } int get(int p) { int res = 0; for (; p >= 1; p -= p&-p) res += bit[p]; return res; } void d_add(int l, int r, int x) { add(l, x); add(r + 1, -x); } }; struct Query { int l, r, a; }; signed main() { cin.tie(0)->sync_with_stdio(0); if (fopen("source.inp", "r")) { freopen("source.inp", "r", stdin); freopen("source.out", "w", stdout); } int n, m; cin >> n >> m; vector<vector<int>> o(n + 1); for (int i = 1; i <= m; ++i) { int x; cin >> x; o[x].push_back(i); } vector<int> p(n + 1); for (int i = 1; i <= n; ++i) cin >> p[i]; int k; cin >> k; vector<Query> qs(k + 1); for (int i = 1; i <= k; ++i) cin >> qs[i].l >> qs[i].r >> qs[i].a; vector<pii> lr(n + 1, {1, k + 1}); bool run = true; while (run) { run = false; vector<vector<int>> curq(k + 1); for (int i = 1; i <= k; ++i) { if (lr[i].fi < lr[i].se) { run = true; int mid = (lr[i].fi + lr[i].se) / 2; curq[mid].push_back(i); } } Fenwick fen(m); for (int i = 1; i <= k; ++i) { auto [l, r, a] = qs[i]; if (l > r) { fen.d_add(l, m, a); fen.d_add(1, r, a); } else { fen.d_add(l, r, a); } for (int id : curq[i]) { int sum = 0; for (int x : o[id]) sum += fen.get(x); auto &[l, r] = lr[id]; if (sum >= p[id]) { r = i; } else { l = i + 1; } } } } for (int i = 1; i <= n; ++i) { if (lr[i].fi == k + 1) { cout << "NIE\n"; } else { cout << lr[i].fi << "\n"; } } }

Compilation message (stderr)

met.cpp: In function 'int main()':
met.cpp:53:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   53 |         freopen("source.inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
met.cpp:54:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   54 |         freopen("source.out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...