Cod sursa(job #1256454)

Utilizator BarbuDorelDorel Barbu BarbuDorel Data 6 noiembrie 2014 12:22:14
Problema Xor Max Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.45 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream in("xormax.in");
ofstream out("xormax.out");

const int MAXN = 100000;

unsigned long long v[MAXN+1], N, d[MAXN+1];
unsigned long long sol = 0, start, finish;


int main()
{
    in>>N;

    for(int i = 1; i <= N; i++)
        in>>v[i];

    d[1] = v[1];

    for(int i = 2; i <= N; i++)
        d[i] = d[i-1]^v[i];

    for(int i = 1; i <= N; i++)
        for(int j = i + 1; j <= N; j++)
            if( j - (i+1) + 1 >= 2 )
            {
                int c = d[i]^d[j];

                if( c > sol )
                {
                    sol = c;
                    start = i + 1;
                    finish = j;
                }
                else
                if( c == sol )
                {
                    if( j < finish )
                    {
                        start = i + 1;
                        finish = j;
                    }
                    else
                    if( j == finish )
                    {
                        int lgc = j - (i+1) + 1;
                        int lg = finish-start+1;
                        if( lgc < lg )
                        {
                            start = i + 1;
                            finish = j;
                        }
                    }
                }
            }

    out<<sol<<' '<<start<<' '<<finish;

    return 0;
}