| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 384586 | zoooma13 | XOR (IZhO12_xor) | C++14 | 162 ms | 23404 KiB | 
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define MAX_N 250005
int tr[3][30*MAX_N] ,root ,nn ,k;
void add(int&p ,int a ,int i ,int b = 30){
    if(p == 0){
        p = ++nn;
        tr[2][p] = i;
    }
    if(b == -1)
        return;
    add(tr[a>>b&1][p] ,a ,i ,b-1);
}
int ask(int&p ,int a ,int b = 30){
    if(p == 0) return 1e9;
    if(b == -1) return tr[2][p];
    int ret = 1e9;
    bool s = k>>b&1 ,t = a>>b&1;
    if(s)
        ret = min(ret ,ask(tr[!t][p] ,a ,b-1));
    else
        ret = min({ret ,tr[2][tr[!t][p]] ,ask(tr[t][p] ,a ,b-1)});
    return ret;
}
int main()
{
    int n ,xr = 0;
    scanf("%d%d",&n,&k);
    tr[2][0] = 1e9;
    add(root ,0 ,0);
    pair <int ,int> ans = {-1e9 ,-1e9};
    for(int a ,i=1; i<=n; i++){
        scanf("%d",&a) ,xr ^= a;
        int b = ask(root ,xr);
        ans = max(ans ,make_pair(i-b ,-b-1));
        add(root ,xr ,i);
    }
    printf("%d %d\n",-ans.second,ans.first);
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
