Pagini recente » Cod sursa (job #732770) | Cod sursa (job #1195661) | Cod sursa (job #696223) | Cod sursa (job #2974959) | Cod sursa (job #2401835)
#include <bits/stdc++.h>
using namespace std;
ifstream in("secv.in");
ofstream out("secv.out");
int maxval=-1;
int n,k,s,p,a[1000005],sum_part[1000005];
deque <int> q;
int calc(int x)
{
int K2=k+1;
return sum_part[x]-sum_part[x-K2];
}
int main()
{int i,j,top,sum=0,counter=0,val;///input
in>>p>>n>>k>>s;
for (i=1;i<=n;i++)in>>a[i],maxval=max(a[i],maxval);
///rezolvam cerinta 1
if (p==1)
{
top=0,counter=0;
for (i=1;i<=n;i++)
{
top++;
sum_part[top]=a[i]+sum_part[top-1];
if (top>=k){
sum=sum_part[top]-sum_part[top-k];
if (sum>s)
top-=k,
counter++;
}
}
out<<counter<<"\n";
}
///cerinta 2
else
{
for (i=1;i<=n;i++)sum_part[i]=a[i]+sum_part[i-1];
int K2=k+1;
for (i=1;i<=n;i++)
{
if (i+K2-1<=n){
sum=sum_part[i+K2-1]-sum_part[i-1];
while ((!q.empty())&&sum>calc(q.back()))
q.pop_back();
q.push_back(i+K2-1);
}
while (q.front()<i)
q.pop_front();
if (calc(q.front())-a[i]>s)
counter++;
}
out<<counter<<"\n";
}
out.close();
in.close();
return 0;
}