Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #define NMAX 1000001
- using namespace std;
- int N,K,S,P,a[NMAX],b[NMAX];
- int main()
- {
- ifstream f("secv.in");
- f>>P>>N>>K>>S;
- for(int i=1;i<=N;++i)
- f>>a[i];
- f.close();
- int Nr=0;
- if(P==1)
- {
- int j=0;
- for(int i=1;i<=N;++i)
- {
- b[j+1]=b[j]+a[i];
- ++j;
- if(j>=K&&b[j]-b[j-K]>S)
- ++Nr,j-=K;
- }
- }
- else
- {
- int dr=1,st=0;
- for(int i=1;i<=N;++i)
- a[i]+=a[i-1];
- for(int i=1;i<=N;++i)
- {
- if(i+K<=N)
- {
- while(dr<=st&&a[i+K]-a[i-1]>=a[b[st]+K]-a[b[st]-1])
- --st;
- b[++st]=i;
- }
- if(a[b[dr]+K]-a[b[dr]-1]-(a[i]-a[i-1])>S)
- ++Nr;
- if(b[dr]==i-K)
- ++dr;
- }
- }
- ofstream g("secv.out");
- g<<Nr;
- g.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement