Cod sursa(job #455300)

Utilizator sapiensCernov Vladimir sapiens Data 13 mai 2010 14:30:00
Problema Deque Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#include <deque>
using namespace std;

ifstream fin; ofstream fout;
deque <long> a,b; long n,k,i,x; long long sm=0;

void adauga (long x,long y) {
     long i;
     for (i=a.size (); i>0; i--)
         if (a[i-1]>y) {a.pop_back (); b.pop_back (); }
     a.push_back (y);
     b.push_back (x);
}

int main () {
    fin.open ("deque.in"); fout.open ("deque.out");
    fin>>n>>k;
    for (i=1; i<=k-1; i++) {
        fin>>x;
        adauga (i,x);
    }
    for (i=k; i<=n; i++) {
        fin>>x;
        adauga (i,x);
        if (b[0]<=i-k) {a.pop_front (); b.pop_front (); }
        sm+=a[0];
    }
    fout<<sm<<endl;
    fin.close (); fout.close ();
    return 0;
}