Pagini recente » Cod sursa (job #316583) | Cod sursa (job #2874216) | Cod sursa (job #542723) | Cod sursa (job #2710121) | Cod sursa (job #559296)
Cod sursa(job #559296)
#include <iostream>
#include <fstream>
using namespace std;
fstream f("xormax.in", ios::in);
fstream g("xormax.out", ios::out);
int main()
{
struct Max {int start; int stop; int value;} maxim;
int n, sir[100005];
f >> n;
for(int i=0; i<n; i++)
f >> sir[i];
Max * max = new Max[1];
max[0].start = n-2; max[0].stop = n-1; max[0].value = sir[n-1] ^ sir[n-2];
maxim.value = max[0].value; maxim.start = max[0].start; maxim.stop = max[0].stop;
for(int i=n-3; i>=0; i--)
{
Max * max2 = new Max[n-i];
max2[0].start = i; max2[0].stop = i + 1; max2[0].value = sir[i] ^ sir[i+1];
maxim = max2[0].value > maxim.value ? max2[0] : maxim;
for(int j=0; j<n-i-1; j++)
{
max2[j+1].start = i;
max2[j+1].stop = max[j].stop;
max2[j+1].value = sir[i] ^ max[j].value;
maxim = max2[0].value > maxim.value ? max2[0] : maxim;
}
//delete[] max;
Max * max = new Max[n-i];
max = max2;
delete[] max2;
}
g << maxim.value << " " << maxim.start + 1 << " " << maxim.stop + 1 << endl;
return 0;
}