Cod sursa(job #3172287)

Utilizator N.B.Lnabil. N.B.L Data 20 noiembrie 2023 14:29:53
Problema Xor Max Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb

#include <bits/stdc++.h>

using namespace std;

int main() {
    ifstream cin("xormax.in");
    ofstream cout("xormax.out");

    int n;
    cin >> n;

    int i = 0;
    long long ans = -LLONG_MAX;
    vector<long long> arr(n, 0);
    vector<long long> sumArr(n, 0);
    int sIdx = 0;
    int eIdx = 0;

    while (i != n) {


        cin >> arr[i];
        sumArr[i] = arr[i];
        if (i > 0) {
            if ((sumArr[i - 1] ^ arr[i]) > arr[i]) {
                sumArr[i] = (sumArr[i - 1] ^ arr[i]);
            } else {
                sumArr[i] = arr[i];
            }
        }
//        cout << sumArr[i] << " ";
        if (ans < sumArr[i]) {
            ans = sumArr[i];
            sIdx = eIdx = i;
        }

        i++;
    }
    i = eIdx;
    long long x = arr[eIdx];
    while (i > 0) {
        if ((x ^ sumArr[i]) == arr[i - 1] && arr[i - 1] != 0) {
            sIdx = i - 1;
            x = arr[i-1];
        } else  {

            break;
        }

        i--;
    }
    cout << endl << ans << " " << sIdx + 1 << " " << eIdx + 1 << endl;
    return 0;
}


//3
//1 0 5

//15
//17
//8
//4
//-1000
//101
//10