Pagini recente » Cod sursa (job #1408248) | Cod sursa (job #2845343) | Cod sursa (job #1347312) | Cod sursa (job #3152385) | Cod sursa (job #2161004)
#include <fstream>
#include <deque>
using namespace std;
ifstream in("secv.in");
ofstream out("secv.out");
int n,i,poz,s,k,p,v[1000001],sum[1000001],ct;
deque <int> c;
int main()
{
in>>p;
in>>n>>k>>s;
for(i=1; i<=n; i++)
in>>v[i];
if(p==1)
{
poz=1;
for(i=1; i<=n; i++)
{
sum[poz]=sum[poz-1]+v[i];
if(poz>=k && sum[poz]-sum[poz-k]>s)
{
ct++;
poz-=k;
}
poz++;
}
out<<ct;
return 0;
}
for(i=1; i<=n; i++)
sum[i]=sum[i-1]+v[i];
for(i=1; i<=n; i++)
{
if(k+i<=n)
while(!c.empty() && sum[i+k]-sum[i-1]>=sum[c.back()+k]-sum[c.back()-1])
c.pop_back();
c.push_back(i);
if(sum[c.front()+k]-sum[c.front()-1]-v[i]>s)
ct++;
if(c.front()+k==i)
c.pop_front();
}
out<<ct;
return 0;
}