Submission #1094398

#TimeUsernameProblemLanguageResultExecution timeMemory
1094398VMaksimoski008Relativnost (COCI15_relativnost)C++17
42 / 140
4033 ms25092 KiB
#include <bits/stdc++.h> using namespace std; const int mod = 10007; const int maxn = 1e5 + 5; int tree[4*maxn][21], n, m; void update(int u, int tl, int tr, int p, int a, int b) { if(tl == tr) { tree[u][1] = a; tree[u][0] = b; } else { int tm = (tl + tr) / 2; if(p <= tm) update(2*u, tl, tm, p, a, b); else update(2*u+1, tm+1, tr, p, a, b); for(int i=0; i<=m; i++) tree[u][i] = 0; for(int i=0; i<=m; i++) for(int j=0; j<=m; j++) tree[u][min(i+j, m)] = (tree[u][min(i+j, m)] + tree[2*u][i] * tree[2*u+1][j]) % mod; } } int main() { cin >> n >> m; vector<int> A(n+1), B(n+1); for(int i=1; i<=n; i++) cin >> A[i]; for(int i=1; i<=n; i++) cin >> B[i]; for(int i=1; i<=n; i++) update(1, 1, n, i, A[i], B[i]); int q; cin >> q; while(q--) { int p, na, nb; cin >> p >> na >> nb; update(1, 1, n, p, na, nb); cout << tree[1][m] << '\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...