Submission #168007

#TimeUsernameProblemLanguageResultExecution timeMemory
168007rzbtDojave (COCI17_dojave)C++14
0 / 140
1811 ms97696 KiB
#include <bits/stdc++.h>
#define mp make_pair
#define pb push_back
#define F first
#define S second
#define all(x) x.begin(),x.end()
#define MAXN 2000000
typedef long long ll;


using namespace std;

ll niz[MAXN];
ll m,n;
ll nu,ve;
ll bit[MAXN],dubina[MAXN];
ll nula=1,tksor,td;
ll gde[MAXN];
ll r1,r2,r3;
map<ll,ll> mpa;

ll res;
int main()
{
    srand(time(NULL));
    scanf("%lld", &m);
    if(m==1){
        printf("2");
        return 0;
    }
    n=1ll<<m;
    res=n*(n+1)/2;
    for(ll i=1;i<=n;i++){
        scanf("%lld",niz+i);

    }

    for(ll i=1;i<=n;i++){
        gde[niz[i]]=i;
        if(!gde[n-niz[i]-1]){
            //printf("    %lld %lld    %lld\n",i,niz[i],n-niz[i]-1);
            r1=rand();
            r2=rand();
            r3=rand();
            bit[i]=r1 ^(r2<<16ll)^(r3<<32ll);
        }else bit[i]=(1ll<<55ll)-1ll-bit[gde[n-niz[i]-1]];
        auto a=mpa.insert(mp(tksor,1ll));
        if(!a.S)a.F->S++;

        tksor^=bit[i];

        res-=mpa[tksor];
        //printf("  %lld %lld   %lld\n",i,td,n-niz[i]-1);
    }


    printf("%lld",res);
    return 0;
}

Compilation message (stderr)

dojave.cpp: In function 'int main()':
dojave.cpp:26:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%lld", &m);
     ~~~~~^~~~~~~~~~~~
dojave.cpp:34:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%lld",niz+i);
         ~~~~~^~~~~~~~~~~~~~
#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...