104012024-04-01 19:58:54Valaki2Lámpákcpp17Hibás válasz 30/10028ms12472 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define fi first
#define se second

const int maxn = 15;
const int logk = 31;

int n, k, q;
int par[1 + maxn];
int nxt[1 << maxn];
int ans[1 << maxn];
int lift[1 << maxn][logk];

int find_nxt(int mask) {
    vector<int> state(1 + n, 0);
    for(int i = 1; i <= n; i++) {
        state[i] = (mask >> (i - 1)) & 1;
    }
    vector<int> subtreexor(1 + n, 0);
    for(int i = n; i >= 1; i--) {
        int prevxor = subtreexor[i];
        subtreexor[i] ^= state[i];
        state[i] ^= prevxor;
        subtreexor[par[i]] ^= subtreexor[i];
    }
    int res = 0;
    for(int i = 1; i <= n; i++) {
        res += (1 << (i - 1)) * state[i];
    }
    return res;
}

void solve() {
    cin >> n >> k >> q;
    for(int i = 2; i <= n; i++) {
        cin >> par[i];
    }
    for(int i = 0; i < (1 << n); i++) {
        nxt[i] = find_nxt(i);
    }
    for(int i = 0; i < (1 << n); i++) {
        lift[i][0] = nxt[i];
    }
    for(int j = 1; j < logk; j++) {
        for(int i = 0; i < (1 << n); i++) {
            lift[i][j] = lift[lift[i][j - 1]][j - 1];
        }
    }
    for(int i = 0; i < (1 << n); i++) {
        ans[i] = i;
        for(int j = logk - 1; j >= 0; j--) {
            if((1 << j) & k) {
                ans[i] = lift[ans[i]][j];
            }
        }
    }
    for(int qi = 1; qi <= q; qi++) {
        int mask = 0;
        for(int i = 0; i < n; i++) {
            int x;
            cin >> x;
            mask += x * (1 << i);
        }
        cout << (ans[mask] & 1) << "\n";
    }
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    solve();
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1848 KiB
2Elfogadva4ms3196 KiB
subtask20/15
3Hibás válasz3ms2376 KiB
4Hibás válasz3ms2712 KiB
5Hibás válasz3ms2948 KiB
subtask30/10
6Hibás válasz3ms3048 KiB
7Hibás válasz3ms2668 KiB
8Futási hiba14ms11344 KiB
9Futási hiba4ms5304 KiB
10Futási hiba7ms3348 KiB
subtask430/30
11Elfogadva28ms11436 KiB
12Elfogadva28ms11496 KiB
13Elfogadva28ms11496 KiB
14Elfogadva28ms11496 KiB
15Elfogadva28ms11500 KiB
16Elfogadva28ms11504 KiB
17Elfogadva28ms11756 KiB
subtask50/45
18Hibás válasz3ms3332 KiB
19Futási hiba14ms11940 KiB
20Futási hiba16ms12136 KiB
21Futási hiba7ms4068 KiB
22Futási hiba7ms4064 KiB
23Futási hiba14ms12252 KiB
24Futási hiba7ms4032 KiB
25Futási hiba7ms4280 KiB
26Futási hiba7ms4388 KiB
27Futási hiba7ms4396 KiB
28Futási hiba14ms12472 KiB
29Futási hiba8ms8444 KiB