Submission #499193

# Submission time Handle Problem Language Result Execution time Memory
499193 2021-12-27T12:32:56 Z LucaIlie XOR Sum (info1cup17_xorsum) C++17
7 / 100
1600 ms 126180 KB
#include <iostream>
#include <algorithm>

#define MAX_N 1000000
#define MAX_LOG_A 29

using namespace std;

int v[MAX_N], rest[MAX_LOG_A + 1][MAX_N];

int countLower( int v[], int n, int a ) {
    int st, dr, mij;

    st = 0;
    dr = n;
    while ( dr - st > 1 ) {
        mij = (st + dr) / 2;

        if ( v[mij] > a )
            dr = mij;
        else
            st = mij;
    }

    if ( v[st] > a )
        return 0;
    return st + 1;
}

int main() {
    int n, r, st, dr, nrSume, res, i, p;

    cin >> n;
    for ( i = 0; i < n; i++ ) {
        cin >> v[i];
        for ( p = 0; p <= MAX_LOG_A; p++ )
            rest[p][i] = v[i] & ((1 << (p + 1)) - 1);
    }

    res = 0;
    for ( p = 0; p <= MAX_LOG_A; p++ ) {
        sort( rest[p], rest[p] + n );
        nrSume = 0;
        for ( i = 0; i < n; i++ ) {
            r = v[i] & ((1 << (p + 1)) - 1);

            st = (1 << p) - r;
            if ( st < 0 )
                st += (1 << (p + 1));
            dr = (1 << (p + 1)) - 1 - r;
            if ( dr < 0 )
                dr += (1 << (p + 1));

            if ( st <= dr ) {
                nrSume += countLower( rest[p], n, dr ) - countLower( rest[p], n, st - 1 );
                if ( st <= r && r <= dr )
                    nrSume++;
            } else {
                nrSume += n - countLower( rest[p], n, st - 1 ) + countLower( rest[p], n, dr );
                if ( st <= r || r <= dr )
                    nrSume++;
            }
        }
        nrSume /= 2;

        if ( nrSume % 2 == 1 )
            res += (1 << p);
    }

    cout << res;

    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 19 ms 972 KB Output is correct
2 Correct 20 ms 960 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1691 ms 126180 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1691 ms 126180 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 19 ms 972 KB Output is correct
2 Correct 20 ms 960 KB Output is correct
3 Incorrect 795 ms 13588 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 19 ms 972 KB Output is correct
2 Correct 20 ms 960 KB Output is correct
3 Execution timed out 1691 ms 126180 KB Time limit exceeded
4 Halted 0 ms 0 KB -