Cod sursa(job #723094)

Utilizator XladhenianGrigorita Vlad-Stefan Xladhenian Data 24 martie 2012 21:49:29
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
                                                     
#include <fstream>
#include <deque>
using namespace std;

long M[5000005];

int main(void)
{
 long long N,i,K,S;
 fstream fin("deque.in",ios::in);
 fstream fout("deque.out",ios::out);
 fin >> N >> K;
 for (i = 0;i < N;i += 1)
  {
   fin >> M[i];
  }
 deque<long long> D;
 S = 0;
 for (i = 0;i < N;i += 1)
  {
   while ((D.size() > 0) && (M[D.back()] > M[i]))
    {
     D.pop_back();
    }
   D.push_back(i);
   if (i >= (K - 1))
     {
      S += M[D.front()];
      if (D.front() <= (i - K + 1))
        {
         D.pop_front();
        }
     }
  }
 fout << S;
 fin.close();
 fout.close();
 return 0;
}