Cod sursa(job #1315478)

Utilizator simaghitaSima Gheorghe Eugen simaghita Data 12 ianuarie 2015 20:47:59
Problema Deque Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <iostream>
#include<fstream>

using namespace std;
int a[5000010],dq[5000010],n,k;
long long sol;
void citire()
{
    ifstream fin("deque.in");
    fin>>n>>k;
    for(int i=1;i<=n;++i)
        fin>>a[i];
    fin.close();
}
void solve()
{
    int pr=-1,ul=0,i;
    for(i=1;i<=n;++i)
    {
        while(pr<=ul && a[i]<=dq[ul])
            --ul;
        dq[++ul]=a[i];
        if(dq[pr]==a[i-k])
            ++pr;
        if(i>=k)
            sol+=dq[pr];
    }

    ofstream fout("deque.out");
    fout<<sol<<"\n";
    fout.close();

}
int main()
{
    citire();
    solve();
    return 0;
}