Submission #165264

#TimeUsernameProblemLanguageResultExecution timeMemory
165264egekabasRelativnost (COCI15_relativnost)C++14
42 / 140
693 ms4088 KiB
#include <bits/stdc++.h> #define ff first #define ss second #define pb push_back #define mp make_pair using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef pair<ll, ll> pll; typedef pair<ull, ull> pull; typedef pair<ll, ll> pii; typedef pair<ld, ld> pld; ll n, c, q; ll sq = 1000009; ll a[100009]; ll b[100009]; ll tmp[1009][25]; ll sqdp[1009][25]; ll sqval[1009][25]; ll mod = 10007; void upd(ll idx){ tmp[0][0] = b[idx*sq]; tmp[0][1] = a[idx*sq]; ll i; for(i = 1; i < sq && idx*sq+i < n; ++i){ tmp[i][0] = b[idx*sq+i]*tmp[i-1][0]%mod; for(ll j = 1; j <= c; ++j){ tmp[i][j] = b[idx*sq+i]*tmp[i-1][j]%mod; tmp[i][j] += a[idx*sq+i]*tmp[i-1][j-1]%mod; tmp[i][j] %= mod; } tmp[i][c] += a[idx*sq+i]*tmp[i-1][c]%mod; tmp[i][c] %= mod; } for(ll j = 0; j <= c; ++j){ sqval[idx][j] = tmp[i-1][j]; // cout << j << " " << tmp[i-1][j] << "\n"; } } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); //freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout); cin >> n >> c; for(ll i = 0; i < n; ++i) cin >> a[i]; for(ll i = 0; i < n; ++i) cin >> b[i]; cin >> q; for(ll i = 0; i < n; i += sq) upd(i/sq); while(q--){ int t1, t2, t3; cin >> t1 >> t2 >> t3; --t1; a[t1] = t2; b[t1] = t3; upd(t1/sq); //if(t1/sq == 0) for(ll j = 0; j <= c; ++j) sqdp[0][j] = sqval[0][j]; for(ll i = 1; i*sq < n; ++i){ for(ll j = 0; j < c; ++j) for(ll k = 0; k <= j; ++k){ sqdp[i][j] += (sqdp[i-1][k]*sqval[i][j-k])%mod; sqdp[i][j] %= mod; } for(ll j = 0; j <= c; ++j) for(ll k = c-j; k <= c; ++k){ sqdp[i][c] += sqdp[i-1][j]*sqval[i][k]%mod; sqdp[i][c] %= mod; } } cout << sqdp[(n-1)/sq][c] << "\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...