Cod sursa(job #455310)

Utilizator sapiensCernov Vladimir sapiens Data 13 mai 2010 15:00:31
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 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 (); }
         if (a[i-1]<y) break;
     }
     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;
}