Pagini recente » Cod sursa (job #488573) | Cod sursa (job #1816947) | Cod sursa (job #1832263) | Cod sursa (job #556085) | Cod sursa (job #561580)
Cod sursa(job #561580)
#include <fstream>
#include <queue>
using namespace std;
fstream fin("xormax.in", ios::in);
fstream fout("xormax.out", ios::out);
struct Max
{
int start; int stop; int value;
Max(int Start, int Stop, int Value)
{start = Start; stop = Stop; value = Value;}
};
int main()
{
int n, len, i=2; queue<Max> max, nr;
fin >> n >> n; Max maxim (1, 1, n);
max.push(maxim); nr.push(maxim);
while(!fin.eof())
{
fin >> n; len = max.size();
nr.push(Max(i, i, n)); i++;
for(int i=0; i<len; i++)
{
if((nr.back().value ^ max.front().value) < maxim.value)
{ max.push(Max(max.front().start, nr.back().stop, (nr.back().value ^ max.front().value))); max.pop(); continue; }
maxim.value = nr.back().value ^ max.front().value;
maxim.start = max.front().start; maxim.stop = nr.back().stop;
max.push(maxim);
max.pop();
}
if((nr.back().value ^ nr.front().value) < maxim.value)
{ max.push(Max(nr.front().start, nr.back().stop, (nr.back().value ^ nr.front().value))); nr.pop(); continue; }
maxim.value = nr.back().value ^ nr.front().value;
maxim.start = nr.front().start; maxim.stop = nr.back().stop;
max.push(maxim);
nr.pop();
}
fout << maxim.value << " " << maxim.start << " " << maxim.stop;
return 0;
}