Cod sursa(job #1712135)

Utilizator sabinantonSabin Anton sabinanton Data 2 iunie 2016 09:57:12
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <iostream>
#include <string.h>
#include <fstream>
using namespace std;
const int N=5000000;
ifstream fin("deque.in");
ofstream fout("deque.out");
long long v[N],d[N],st,dr=-1,n,k,i,s=0;
void stanga(int i)
{
    if(d[st]==i-k)
    {
        st++;
    }
}
void dreapta(int i)
{
    while(st<=dr&&v[i]<=v[d[dr]])
    {
        dr--;
        }
        d[++dr]=i;
}
int main()
{
    fin>>n>>k;
    for(i=1; i<=n; i++)
    {
        fin>>v[i];
    }
    for(i=1; i<=n; i++)
    {
        stanga(i);
        dreapta(i);
if(i>=k){s+=v[d[st]];}
    }

    fout<<s;
    return 0;
}