Cod sursa(job #235601)

Utilizator mihai_floreaFlorea Mihai Alexandru mihai_florea Data 24 decembrie 2008 16:54:16
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <deque>
#include <fstream>
using namespace std;
#define val first
#define poz second
ifstream f("deque.in");
ofstream g("deque.out");
int N,K;
long long sol;
deque< pair<int,int> > Q;
int main(){
    int i,x;
    f>>N>>K;
    for (i=1;i<K;++i)
     {
      f>>x;
      while (!Q.empty() && Q.back().val>=x)
       Q.pop_back();
      Q.push_back(make_pair(x,i));
     }
    for (;i<=N;++i)
     {
      while (!Q.empty() && Q.front().poz<i-K+1)
       Q.pop_front();
      f>>x;
      while (!Q.empty() && Q.back().val>=x)
       Q.pop_back();
      Q.push_back(make_pair(x,i));
      sol+=(long long)Q.front().val;
     }
    g<<sol;
    return 0;
}