Cod sursa(job #670444)

Utilizator vgabi94Vaduva Gabriel vgabi94 Data 29 ianuarie 2012 11:15:53
Problema Xor Max Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#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, x, y; in >> n;
    in >> x; maxim t(1, 1, x); queue<maxim> ql; ql.push(t); y = x;
    for(int i=2; i <= n; i++)
    {
        in >> x;
        ql.push(maxim(i-1, i, x ^ y));
        if((x ^ ql.front().val) > t.val) t = ql.back();
        ql.pop();
        for(int j = 2; j < i; j++)
        {
            ql.push(maxim(ql.front().start, i, x ^ ql.front().val)); 
            if((x ^ ql.front().val) > t.val) t = ql.back();
            ql.pop();
        }
        y = x;
    }
    out << t.val << ' ' << t.start << ' ' << t.stop;
    //system("PAUSE");
    return 0;
}