Pagini recente » Cod sursa (job #1708394) | Cod sursa (job #1610667) | Cod sursa (job #2763768) | Cod sursa (job #1715754) | Cod sursa (job #3335267)
#include <iostream>
#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;
cout<<poz<<'\n';
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';
}