#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;
}
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:55:9: note: in expansion of macro 'debug'
55 | debug(l, r, cand);
| ^~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
15704 KB |
Output is correct |
2 |
Correct |
5 ms |
15860 KB |
Output is correct |
3 |
Correct |
5 ms |
15708 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
15704 KB |
Output is correct |
2 |
Correct |
4 ms |
15708 KB |
Output is correct |
3 |
Correct |
5 ms |
15964 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
52 ms |
18468 KB |
Output is correct |
2 |
Correct |
84 ms |
21584 KB |
Output is correct |
3 |
Correct |
68 ms |
19548 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
66 ms |
18460 KB |
Output is correct |
2 |
Correct |
73 ms |
19520 KB |
Output is correct |
3 |
Correct |
85 ms |
20816 KB |
Output is correct |
4 |
Correct |
19 ms |
18012 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
54 ms |
18268 KB |
Output is correct |
2 |
Correct |
64 ms |
21080 KB |
Output is correct |
3 |
Correct |
41 ms |
17756 KB |
Output is correct |
4 |
Correct |
69 ms |
19880 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
71 ms |
17980 KB |
Output is correct |
2 |
Correct |
79 ms |
19656 KB |
Output is correct |
3 |
Correct |
54 ms |
19032 KB |
Output is correct |
4 |
Correct |
80 ms |
20564 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
681 ms |
37720 KB |
Output is correct |
2 |
Incorrect |
533 ms |
36448 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
693 ms |
35788 KB |
Output is correct |
2 |
Incorrect |
564 ms |
35096 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |