Pagini recente » Cod sursa (job #1521922) | Cod sursa (job #1379161) | Cod sursa (job #1014555) | Cod sursa (job #2298916) | Cod sursa (job #670447)
Cod sursa(job #670447)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
struct maxim
{
maxim(int p, int q, int r) { start = p; stop = q; val = r; }
int start, stop;
int val;
};
int main()
{
ifstream in("xormax.in");
ofstream out("xormax.out");
register int n; in >> n;
int * ls = new int[n+1];
for(int i=1; i<=n; i++) in >> ls[i];
maxim t(1, 1, ls[1]); queue<maxim> ql; ql.push(t);
for(int i=2; i <= n; i++)
{
ql.push(maxim(i-1, i, ls[i] ^ ls[i-1]));
if((ls[i] ^ ql.front().val) > t.val) t = ql.back();
ql.pop();
for(int j = 2; j < i; j++)
{
ql.push(maxim(ql.front().start, i, ls[i] ^ ql.front().val));
if((ls[i] ^ ql.front().val) > t.val) t = ql.back();
ql.pop();
}
}
out << t.val << ' ' << t.start << ' ' << t.stop;
//system("PAUSE");
return 0;
}