제출 #1011901

#제출 시각아이디문제언어결과실행 시간메모리
1011901atom새로운 문제 (POI11_met)C++17
74 / 100
693 ms37720 KiB
#include "bits/stdc++.h" // @JASPER'S BOILERPLATE using namespace std; using ll = long long; #ifdef JASPER #include "debug.h" #else #define debug(...) 166 #endif const int N = 3e5 + 5; struct FenwickTree { int n; vector <ll> f; void init(int _n) { n = _n; f.resize(n + 5, 0); } void modify(int x, int val) { for (; x <= n; x += x & -x) f[x] += val; } void upd(int l, int r, int val) { if (l <= r) { modify(l, val); modify(r + 1, -val); } else { modify(1, val); modify(r + 1, -val); modify(l, val); modify(n + 1, -val); } } ll qry(int x) { ll sum = 0; for (; x; x -= x & -x) sum += f[x]; return sum; } } bit; vector <int> adj[N]; vector <int> qs[N]; int ans[N]; ll tar[N]; void dnc(int l, int r, vector <int>& cand) { if (l + 1 == r) { debug(l, r, cand); for (int x : cand) ans[x] = l; return; } int m = (l + r) / 2; vector <int> L, R; for (int i = l; i < m; ++i) { auto x = qs[i]; bit.upd(x[0], x[1], x[2]); } vector <int> done, undone; for (auto x : cand) { ll sum = 0; for (int y : adj[x]) sum += bit.qry(y); if (sum >= tar[x]) { done.push_back(x); } else { tar[x] -= sum; undone.push_back(x); } } // reroll change as we no longer able to process for (int i = l; i < m; ++i) { auto x = qs[i]; bit.upd(x[0], x[1], -x[2]); } dnc(l, m, done); dnc(m, r, undone); } int n, m; int q; signed main() { cin.tie(0) -> sync_with_stdio(0); #ifdef JASPER freopen("in1", "r", stdin); #endif cin >> n >> m; for (int i = 1; i <= m; ++i) { int x; cin >> x; adj[x].push_back(i); } for (int i = 1; i <= n; ++i) cin >> tar[i]; cin >> q; for (int i = 1; i <= q; ++i) { int l, r, c; cin >> l >> r >> c; qs[i] = {l, r, c}; } qs[q + 1] = {0, 0, 0}; vector <int> cand(n); iota(cand.begin(), cand.end(), 1); bit.init(m); dnc(1, q + 2, cand); for (int i = 1; i <= n; ++i) { if (ans[i] == q + 1) cout << "NIE\n"; else cout << ans[i] << "\n"; } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

met.cpp: In function 'void dnc(int, int, std::vector<int>&)':
met.cpp:9:20: warning: statement has no effect [-Wunused-value]
    9 | #define debug(...) 166
      |                    ^~~
met.cpp:55:9: note: in expansion of macro 'debug'
   55 |         debug(l, r, cand);
      |         ^~~~~
#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...