Cod sursa(job #1328044)

Utilizator NaniteNanite Nanite Data 27 ianuarie 2015 22:08:12
Problema Xor Max Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<fstream>
#include<cmath>

using namespace std;

const unsigned int maxN = 100000;
unsigned int N, arr[maxN], _max, start, stop;

void read() {
    ifstream f("xormax.in");
    f >> N;
    for(int i = 0; i < N; i++) {
        f >> arr[i];
    }
}

unsigned int getMax() {
    unsigned int _max = 0;
    for(int i = 0; i < N; i++) {
        if(arr[i] > _max) _max = arr[i];
    }
    return _max;
}

void solve() {
    unsigned int digits_baseTwo = (unsigned int)log2((double)getMax()), m;
    for(int i = 0; i < N; i++) {
        m = 0;
        for(int j = i; j < N && j-i<=digits_baseTwo; j++) {
            m ^= arr[j];
            if(m > _max) {
                _max = m;
                start = i;
                stop = j;
            }
        }
    }
}

void write() {
    ofstream("xormax.out") << _max << ' ' << start+1 << ' ' << stop+1;
}

int main() {
    read();
    solve();
    write();

    return 0;
}