Cod sursa(job #1059109)

Utilizator PatrunjelFMIAnita Liviu Patrunjel Data 16 decembrie 2013 10:24:06
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
//-2166091628382
#include<iostream>
#include<fstream>
using namespace std;

ifstream fin("deque.in");
ofstream fout("deque.out");

struct nod{
    int val,poz;
};

nod deque[5000000];
int inc,sf;

void adaug_sf(int v,int i){

    while(sf>=inc && v<deque[sf].val)    sf--;
    if(sf<inc)  inc=sf+1;
    deque[++sf].val=v;
    deque[sf].poz=i;
}

int main(){
    int i,n,k,v;
    long long s=0;

    inc=1;
    sf=0;
    fin>>n>>k;
    for(i=1;i<k;i++){
        fin>>v;
        adaug_sf(v,i);
    }
    for(i=k;fin>>v;i++){
        if(deque[inc].poz+k-1<i)    inc++;
        adaug_sf(v,i);
        s+=deque[inc].val;
    }

    cout<<s<<endl;
    return 0;
}