Pagini recente » Cod sursa (job #680371) | Cod sursa (job #21309) | Cod sursa (job #282504) | Cod sursa (job #3230922) | Cod sursa (job #559282)
Cod sursa(job #559282)
#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[100000];
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;
}
cout << maxim.value << " " << maxim.start + 1 << " " << maxim.stop + 1 << endl;
system ("PAUSE");
return 0;
}