#include "bits/stdc++.h"
using namespace std;
#define intt long long
#define fi first
#define se second
const intt mxN = 1e5 + 5;
const intt LG = 20;
const intt inf = 1e18;
const intt mod = 10007;
vector<vector<intt>> seg;
vector<intt> a(mxN), b(mxN);
intt n, c, q;
void build(intt node, intt l, intt r) {
if(l == r) {
seg[0][node] = b[l] % mod;
seg[1][node] = a[l] % mod;
return;
}
intt mid = (l + r) / 2;
build(node * 2, l, mid);
build(node * 2 + 1, mid + 1, r);
\
for(intt sol = 0; sol <= c; sol++) {
for(intt sag = 0; sag <= c; sag++) {
intt cnt = min(sol + sag, c);
seg[cnt][node] += ((seg[sol][node * 2] * seg[sag][node * 2 + 1]) % mod);
seg[cnt][node] %= mod;
// cout << node << " " << cnt << ": " << seg[cnt][node] << endl;
}
}
}
void update(intt node, intt l, intt r, intt pos, intt aval, intt bval) {
if(l == r) {
seg[0][node] = bval % mod;
seg[1][node] = aval % mod;
return;
}
intt mid = (l + r) / 2;
if(pos <= mid) {
update(node * 2, l, mid, pos, aval, bval);
} else {
update(node * 2 + 1, mid + 1, r, pos, aval, bval);
}
for(intt C = 0; C <= c; C++) seg[C][node]=0;
for(intt sol = 0; sol <= c; sol++) {
for(intt sag = 0; sag <= c; sag++) {
intt cnt = min(sol + sag, c);
seg[cnt][node] += ((seg[sol][node * 2] * seg[sag][node * 2 + 1]) % mod);
seg[cnt][node] %= mod;
}
}
}
intt get(intt node, intt l, intt r, intt ql, intt qr) {
if(ql > r || qr < l || ql > qr) return 0ll;
if(ql <= l && r <= qr) {
return seg[c][node] % mod;
}
intt mid = (l + r) / 2;
return get(node * 2, l, mid, ql, qr) + get(node * 2 + 1, mid + 1, r, ql, qr);
}
void _() {
cin >> n >> c;
seg.assign(c + 1, vector<intt>(4 * n + 1, 0ll));
a.resize(n+1); b.resize(n + 1);
for(intt i = 1; i <= n; i++) cin >> a[i];
for(intt i = 1; i <= n; i++) cin >> b[i];
build(1, 1, n);
cin >> q;
while(q--) {
intt idx, av, bv;
cin >> idx >> av >> bv;
update(1, 1, n, idx, av, bv);
cout << get(1, 1, n, 1, n) << endl;
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
intt t = 1, buu = 1;
// cin >> t;
while(t--){
// cout << "Case #" << buu++ << ": ";
_();
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |