10401 2024. 04. 01 19:58:54 Valaki2 Lámpák cpp17 Hibás válasz 30/100 28ms 12472 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 Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1848 KiB
2 Elfogadva 4ms 3196 KiB
subtask2 0/15
3 Hibás válasz 3ms 2376 KiB
4 Hibás válasz 3ms 2712 KiB
5 Hibás válasz 3ms 2948 KiB
subtask3 0/10
6 Hibás válasz 3ms 3048 KiB
7 Hibás válasz 3ms 2668 KiB
8 Futási hiba 14ms 11344 KiB
9 Futási hiba 4ms 5304 KiB
10 Futási hiba 7ms 3348 KiB
subtask4 30/30
11 Elfogadva 28ms 11436 KiB
12 Elfogadva 28ms 11496 KiB
13 Elfogadva 28ms 11496 KiB
14 Elfogadva 28ms 11496 KiB
15 Elfogadva 28ms 11500 KiB
16 Elfogadva 28ms 11504 KiB
17 Elfogadva 28ms 11756 KiB
subtask5 0/45
18 Hibás válasz 3ms 3332 KiB
19 Futási hiba 14ms 11940 KiB
20 Futási hiba 16ms 12136 KiB
21 Futási hiba 7ms 4068 KiB
22 Futási hiba 7ms 4064 KiB
23 Futási hiba 14ms 12252 KiB
24 Futási hiba 7ms 4032 KiB
25 Futási hiba 7ms 4280 KiB
26 Futási hiba 7ms 4388 KiB
27 Futási hiba 7ms 4396 KiB
28 Futási hiba 14ms 12472 KiB
29 Futási hiba 8ms 8444 KiB