Submission #1228340

#TimeUsernameProblemLanguageResultExecution timeMemory
1228340takoshanavaRelativnost (COCI15_relativnost)C++20
0 / 140
4094 ms3140 KiB
#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define fs first
#define sc second
using namespace std;

const int MOD = 10007;
const int N = 21;

int n, C, Q;
vector<int> a, b;

int count(int x) {
    int cnt = 0;
    while (x) {
        cnt += (x & 1);
        x >>= 1;
    }
    return cnt;
}


signed main(){
    cin >> n >> C;
    a.resize(n);
    b.resize(n);
    for (int i = 0; i < n; i++) cin >> a[i];
    for (int i = 0; i < n; i++) cin >> b[i];

    cin >> Q;
    while (Q--) {
        int p, a1, b1;
        cin >> p >> a1 >> b1;
        p--;

        a[p] = a1;
        b[p] = b1;
        vector<pair<int, int>> c(n);
        for (int i = 0; i < n; i++) {
            c[i] = {a[i], b[i]};
        }
        int ans = 0;
        int total = 1LL << n;

        for (int mask = 0; mask < total; mask++) {
            int cnt = count(mask);
            if (cnt < C) continue;

            int cc = 1;
            for (int i = 0; i < n; i++) {
                if (mask & (1LL << i)) {
                    cc = cc * a[i] % MOD;
                } else {
                    cc = cc * b[i] % MOD;
                }
            }
            ans = (ans + cc) % MOD;
        }

        cout << ans << endl;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...