Cod sursa(job #2161004)

Utilizator ElektrykT E S L A P E F E L I E Elektryk Data 11 martie 2018 15:00:38
Problema Secv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#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;
}