Submission #1164937

#TimeUsernameProblemLanguageResultExecution timeMemory
1164937LmaoLmaoXOR (IZhO12_xor)C++20
100 / 100
69 ms21320 KiB
#include<bits/stdc++.h>
#define fi first
#define se second
//#define int long long
using namespace std;

using ll = long long;
using ii = pair<ll, ll>;
using aa = array<int,4>;

const int N = 1e6+5;
const int INF = 1e9;
const int MOD = 1e5+3;

int trie[10000005][2];
int a[10000005];
int timer=0;

int get(int x,int k) {
    int u=0;
    int res=1e6;
    for(int i=30;i>=0;i--) {
        int vx=(x >> i) & 1,vk=(k >> i) & 1;
        if(vx && vk) {
            if(!trie[u][0]) return res;
            u=trie[u][0];
        } else
        if(vx && !vk) {
            if(trie[u][0]) res=min(res,a[trie[u][0]]);
            if(!trie[u][1]) return res;
            u=trie[u][1];
        }else 
        if(!vx && vk) {
            if(!trie[u][1]) return res;
            u=trie[u][1];
        }
        else {
          if(trie[u][1]) res=min(res,a[trie[u][1]]);
          if(!trie[u][0]) return res;
          u=trie[u][0];
        }
    }
    res=min(res,a[u]);
    return res;
}

void add(int x,int val) {
    int u=0;
    for(int i=30;i>=0;i--) {
        int v=(x >> i) & 1;
        if(!trie[u][v]) {
            trie[u][v]=++timer;
            a[timer]=val;
        }
        u=trie[u][v];
        a[u]=min(a[u],val);
    }
}

signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL); 
    int n,k;
    cin >> n >> k;
    int sum=0;
    ii ans={0,0};
    add(sum,0);
    for(int i=1;i<=n;i++) {
        int x;
        cin >> x;
        sum ^= x;
        int t=get(sum,k);
        if(i-t>ans.se) {
            ans={t+1,i-t};
        }
        //cout << sum << ' ' << t << ' ' << ans.se << endl;
        //cout << get(sum,k) << ' ' << sum << endl;
        add(sum,i);
    }
    cout << ans.fi << ' ' << ans.se;
    return 0;
}
 
/*
██╗░░██╗██╗░░██╗░█████╗░███╗░░██╗░██████╗░              ░██████╗██╗██╗░░░██╗                ░█████╗░██╗░░░██╗████████╗███████╗
██║░██╔╝██║░░██║██╔══██╗████╗░██║██╔════╝░              ██╔════╝██║██║░░░██║                ██╔══██╗██║░░░██║╚══██╔══╝██╔════╝
█████═╝░███████║███████║██╔██╗██║██║░░██╗░              ╚█████╗░██║██║░░░██║                ██║░░╚═╝██║░░░██║░░░██║░░░█████╗░░
██╔═██╗░██╔══██║██╔══██║██║╚████║██║░░╚██╗              ░╚═══██╗██║██║░░░██║                ██║░░██╗██║░░░██║░░░██║░░░██╔══╝░░
██║░╚██╗██║░░██║██║░░██║██║░╚███║╚██████╔╝              ██████╔╝██║╚██████╔╝                ╚█████╔╝╚██████╔╝░░░██║░░░███████╗
╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝░╚═════╝░              ╚═════╝░╚═╝░╚═════╝░                ░╚════╝░░╚═════╝░░░░╚═╝░░░╚══════╝
*/
#Verdict Execution timeMemoryGrader output
Fetching results...