Cod sursa(job #3335268)

Utilizator Vlad10Vlad Negut Vlad10 Data 22 ianuarie 2026 10:02:35
Problema Xor Max Scor 15
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <fstream>
using namespace std;
ifstream cin ("xormax.in");
ofstream cout ("xormax.out");
int n;
int trie[4200001];
int vmax, st,dr;
int main()
{
    for(int i=1;i<=4200000;i++){
        trie[i] = -1;
    }
    vmax = st = dr = -1;
    cin>>n;
    for (int i =1; i<=n;i++){
        int x;
        cin>>x;
        int poz = 1;
        int p2 = (1<<(21));
        int val = 0,stc = i;
        val = x;
        while(p2>0){
            if(x<p2){
                poz = poz*2+1;
                if(trie[poz]!=-1){
                    val+=p2;
                    stc = trie[poz];
                }else if(trie[poz-1] != -1){
                    poz--;
                }else{
                    p2 = -1;
                }
            }else{
                poz = poz*2;
                if(trie[poz] ==-1){
                    p2 = -1;
                }
            }
            p2 = p2/2;
        }
        if(val > vmax){
            vmax = val;
            st = stc;
            dr = i;
        }
        p2 = (1<<(21));
        trie[1] = i;
        poz = 1;
        while(p2>0){
            if(x<p2){
                poz = poz*2;
                trie[poz] =i;
            }else{
                x-=p2;
                poz = poz*2+1;
                trie[poz] = i;
            }
            p2 = p2/2;
        }
    }
    cout<<vmax<<' '<<st<<' '<<dr<<'\n';
}