Submission #1139435

#TimeUsernameProblemLanguageResultExecution timeMemory
1139435THXuanRelativnost (COCI15_relativnost)C++20
70 / 140
2051 ms45276 KiB
// full solution #include <iostream> #include <vector> #include <algorithm> #include <queue> #include <set> #include <map> #define INF 1e9 typedef long long ll; using namespace std; int n = 0, c = 0; const ll MOD = 10007; ll a[100005], b[100005], dp[4 * 100005][21]; void memo(int v) { for (int i = 0; i <= c; i++)dp[v][i] = 0; for (int i = 0; i <= c; i++) { for (int j = 0; j <= c; j++) { dp[v][min(i + j, c)] = (dp[v][min(i + j, c)] + dp[2 * v][i] * dp[2 * v + 1][j]) % MOD; } } } void build(int v, int l, int r) { if (l == r) { dp[v][0] = b[l] % MOD; dp[v][1] = a[l] % MOD; return; } int mid = (l + r) / 2; build(2 * v, l, mid); build(2 * v + 1, mid + 1, r); memo(v); } void update(int v, int l, int r, int k) { if (l == r) { dp[v][0] = b[l] % MOD; dp[v][1] = a[l] % MOD; return; } int mid = (l + r) / 2; if (k <= mid)update(2 * v, l, mid, k); else update(2 * v + 1, mid + 1, r, k); memo(v); } void solve() { cin >> n >> c; for (int i = 1; i <= n; i++)cin >> a[i]; for (int i = 1; i <= n; i++)cin >> b[i]; build(1, 1, n); int q; cin >> q; while (q--) { ll p, A, B; cin >> p >> A >> B; a[p] = A; b[p] = B; update(1, 1, n, p); cout << dp[1][c] << "\n"; } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int t = 1;// cin >> t; while (t--) solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...