Cod sursa(job #1313192)

Utilizator valentin11cCraciun Valentin-Gabriel valentin11c Data 10 ianuarie 2015 13:17:35
Problema Deque Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <deque>
#include <algorithm>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int a[5000005],n,k,minn=10000005;
deque <int> coada;
long long sol=0;
void citire()
{
    f>>n>>k;
    for(int i=1;i<=n;i++) f>>a[i];
}
void solve()
{
    coada.push_front(a[1]);

    for(int i=2;i<=k;i++)
    {
        if(a[i]<=coada.back())
        {

        while(a[i]<=coada.back() && !coada.empty())
        coada.pop_back();



        }
        coada.push_back(a[i]);

    }
    sol+=coada.front();

    //coada.push_back(minn);
   // sort(coada+1,coada+k+1);

for(int i=2;i<=n-k+1;i++)
{
    if(a[i-1]==coada.front()) coada.pop_front();

    while(a[i+k-1]<coada.back() && !coada.empty())
    {
        coada.pop_back();
    }
    coada.push_back(a[i+k-1]);

    sol+=coada.front();
   // cout<<coada.front()<<" ";
}

}
int main()
{
    citire();
    solve();
    g<<sol;
    return 0;
}