Cod sursa(job #2886068)

Utilizator RobertAcAcatrinei Robert-Marian RobertAc Data 6 aprilie 2022 22:13:15
Problema Xor Max Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std;

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

const int nmax = 100005;

int v[nmax];
int n;

pair<int,int> verif(int caut,int nr)
{
    map<int,int> m;
    int sum=0;
    for(int i=1;i<=n;i++)
    {
        sum^=(v[i]&caut);
        m[sum]=i;
        if(m[sum^nr])return {m[sum^nr]+1,i};
    }
    return {0,0};
}

int main()
{
    in>>n;
    for(int i=1;i<=n;i++)
    {
        in>>v[i];
    }
    int nr=0, caut=0;
    pair<int,int> p;
    for(int i=22;i>=0;i--)
    {
        if(caut)caut|=1<<i;
        p = verif(caut|(1<<i),nr|(1<<i));
        if(p.first)
        {
            nr|=(1<<i);
            caut|=(1<<i);
        }
    }
    p = verif(caut,nr);
    out<<nr<<' '<<p.first<<' '<<p.second<<'\n';
}