Cod sursa(job #1009865)

Utilizator hevelebalazshevele balazs hevelebalazs Data 13 octombrie 2013 22:26:58
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <stdio.h>
#include <queue>
#define ll long long
#define fr(i,a,b) for(int i=a;i<b;++i)
using namespace std;
deque<int>q;
void be(int i){
    while(!q.empty()&&q.front()>i){
        q.pop_front();
        }
    q.push_front(i);
    }
int main(){
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    int n,k,j;
    scanf("%i %i",&n,&k);
    ll s=0;
    deque<int>o;
    fr(i,0,k-1){
        scanf("%i",&j);
        be(j);
        o.push_back(j);
        }
    fr(i,k-1,n){
        scanf("%i",&j);
        o.push_back(j);
        be(j);
        s+=q.back();
        if(q.back()==o.front()) q.pop_back();
        o.pop_front();
        }
    printf("%lli\n",s);
    return 0;
    }