제출 #236096

#제출 시각아이디문제언어결과실행 시간메모리
236096VEGAnnDojave (COCI17_dojave)C++14
42 / 140
4088 ms12664 KiB
#include <bits/stdc++.h>
#define sz(x) ((int)x.size())
#define a3 array<int, 3>
using namespace std;
const int N = (1 << 20);
const int oo = 2e9;
int a[N], need, m, ans = 0;
bool in[N];

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0);

#ifdef _LOCAL
    freopen("in.txt","r",stdin);
#endif // _LOCAL

    cin >> m;

    for (int i = 0; i < (1 << m); i++)
        cin >> a[i];

    need = (1 << m) - 1;

    for (int l = 0; l < (1 << m); l++){
        int xr = 0;

        fill(in, in + (1 << m), 0);

        for (int r = l; r < (1 << m); r++){
            xr ^= a[r];
            in[a[r]] = 1;

            if (xr == need){
                if (r - l + 3 <= (1 << m) || (r - l + 1 > 1))
                    ans++;
//                else cerr << l << " " << r << '\n';
            } else {
                bool ok = 0;

                for (int i = l; i <= r && !ok; i++){
                    int nd = (need ^ a[i] ^ xr);

                    if (!in[nd])
                        ok = 1;
                }

                if (ok)
                    ans++;
//                else cerr << l << " " << r << '\n';
            }
        }
    }

    cout << ans;

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