CSES Solutions
#3405Sliding Window Problems

Sliding Window Or

View on CSES

Solution

3405-Sliding_Window_Or.cpp
1#include<bits/stdc++.h>
2using namespace std;
3#define int long long
4signed main(){
5  ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
6  int n,k,x,a,b,c; cin>>n>>k>>x>>a>>b>>c;
7  int po[n],so[n],i=1; for(po[0]=x,so[0]=x;i<n;++i)
8    po[i]=(po[i-1]*a+b)%c,so[i]=po[i];
9  for(int l=0,r=k-1;l<n;l+=k,r+=k,r=min(r,n-1)){
10    for(i=l+1;i<=r;++i) po[i]|=po[i-1];
11    for(i=r-1;i>=l;--i) so[i]|=so[i+1];
12  }
13  int ans=0;
14  for(i=0;i<=n-k;++i)
15    ans^=(so[i]|po[i+k-1]);
16  cout<<ans<<'\n';
17  return 0;
18}

Editorial not yet generated for this problem. Run the editorial generation script to add hints and detailed explanations.