Submission #338551

#TimeUsernameProblemLanguageResultExecution timeMemory
338551amunduzbaevXOR (IZhO12_xor)C++14
0 / 100
1 ms364 KiB
/** made by amunduzbaev **/ #include <bits/stdc++.h> using namespace std; #define ff first #define ss second #define pb push_back #define mp make_pair #define ub upper_bound #define lb lower_bound #define ll long long #define ld long double #define pii pair<int, int> #define pll pair<ll, ll> #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(),x.rend() #define fastios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define vll vector<ll> #define vii vector<int> const int N = 250005 ; const int mod = 1e9+7; const ll inf = 1e18; const ld Pi = acos(-1); int n, m, k, ans, a[N]; int tree[N*30][2], node; int sub[N*30]; void sett(int x, int ind){ int now = 0; for(int i=30;i>=0;i--){ int bit = (x>>i)&1; if(tree[now][bit]){ now = tree[now][bit]; }else{ sub[now] = mod; tree[now][bit]=++node; now = tree[now][bit]; } sub[now] = min(sub[now], ind); } } int get(int i, int x, int now, int cur){ if(cur >= k) return sub[now]; if(i<0 || k > (1<<(i+1))-1+cur) return mod; int bit = (x>>i)&1, res = mod; for(int j=0;j<2;j++){ if(tree[now][j]) res = min(res, get(i-1, x, tree[now][j], cur + (j != bit ? (1<<i) : 0))); } return res; } void solve(){ fastios cin>>n>>k; for(int i=1;i<=n;i++){ cin>>a[i]; a[i] += a[i-1]; } int l = 1, r = 1; for(int i=1;i<=n;i++){ sett(a[i-1], i); int lx = get(29, a[i], 0, 0); if(i - lx > r - l) r = i, l = lx; } cout<<l+1<<" "<<r-l+1<<endl; return; } int main(){ fastios int t = 1; if(t) solve(); else { cin>>t; while (t--) solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...