Cod sursa(job #670447)

Utilizator vgabi94Vaduva Gabriel vgabi94 Data 29 ianuarie 2012 11:19:38
Problema Xor Max Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 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; 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;
}