Cod sursa(job #3264840)

Utilizator PetyAlexandru Peticaru Pety Data 24 decembrie 2024 17:34:34
Problema Xor Max Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
using namespace std;

ifstream cin("xormax.in");
ofstream cout("xormax.out");

#define int long long

int v[100001];
int c[21];
int trie[4194305];

signed main()
{
    int n,i,j,nod,rasp=-1,st,dr,alt=0;
    cin>>n;
    for(i=2;i<(1<<22);i++) trie[i]=-1;
    for(i=1;i<22;i++) trie[i]=0;
    for(i=1;i<=n;i++){
        cin>>v[i];
        v[i]^=v[i-1];
        for(j=0;j<21;j++){
            c[j]=(bool)(v[i]&(1<<(20-j)));
        }
        nod=1;
        for(j=0;j<21;j++){
            if(trie[2*nod+!c[j]>0]) nod=2*nod+!c[j];
            else nod=2*nod+c[j];
        }
        j=trie[nod];
        if((v[i]^v[j])>rasp){
            rasp=(v[i]^v[j]);
            st=j+1;dr=i;
        }
        alt++;
    }
    cout<<rasp<<" "<<st<<" "<<dr<<" "<<alt;
    return 0;
}