#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 {
upd(1, r, val);
upd(l, 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;
}
Compilation message
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:53:9: note: in expansion of macro 'debug'
53 | debug(l, r, cand);
| ^~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
6 ms |
14428 KB |
Output is correct |
2 |
Correct |
7 ms |
14428 KB |
Output is correct |
3 |
Correct |
7 ms |
14428 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
14428 KB |
Output is correct |
2 |
Correct |
7 ms |
14424 KB |
Output is correct |
3 |
Correct |
7 ms |
14684 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
53 ms |
17184 KB |
Output is correct |
2 |
Correct |
86 ms |
20416 KB |
Output is correct |
3 |
Correct |
72 ms |
18464 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
69 ms |
17236 KB |
Output is correct |
2 |
Correct |
77 ms |
18212 KB |
Output is correct |
3 |
Correct |
85 ms |
19820 KB |
Output is correct |
4 |
Correct |
23 ms |
16800 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
62 ms |
16988 KB |
Output is correct |
2 |
Correct |
65 ms |
19924 KB |
Output is correct |
3 |
Correct |
52 ms |
16708 KB |
Output is correct |
4 |
Correct |
65 ms |
18672 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
70 ms |
16768 KB |
Output is correct |
2 |
Correct |
79 ms |
18380 KB |
Output is correct |
3 |
Correct |
62 ms |
17768 KB |
Output is correct |
4 |
Correct |
83 ms |
19416 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
753 ms |
36880 KB |
Output is correct |
2 |
Incorrect |
512 ms |
35296 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
622 ms |
34752 KB |
Output is correct |
2 |
Incorrect |
503 ms |
33824 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |