Submission #1094391

#TimeUsernameProblemLanguageResultExecution timeMemory
1094391VMaksimoski008Relativnost (COCI15_relativnost)C++17
42 / 140
55 ms4236 KiB
#include <bits/stdc++.h>

#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
//#define int long long

using namespace std;

using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;

const int mod = 10007;
const int LOG = 20;
const int maxn = 1e5 + 5;

ll dp[1005][21];

signed main() {
    ios_base::sync_with_stdio(false);
    cout.tie(0); cin.tie(0);

    int n, m; 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];

    int q; cin >> q;
    while(q--) {
        int p, na, nb; cin >> p >> na >> nb;
        A[p] = na; B[p] = nb;
        memset(dp, 0, sizeof(dp));
        dp[0][0] = 1;
        
        for(int i=1; i<=n; i++) {
            for(int j=0; j<=m; j++) {
                if(j) dp[i][j] = (dp[i][j] + dp[i-1][j-1] * A[i]) % mod;
                dp[i][j] = (dp[i][j] + dp[i-1][j] * B[i]) % mod;
                if(j == m) dp[i][j] = (dp[i][j] + dp[i-1][j] * A[i]) % mod;
            }
        }

        cout << dp[n][m] << '\n';
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...