Cod sursa(job #2657263)

Utilizator codruta.miron08Miron Ioana Codruta codruta.miron08 Data 10 octombrie 2020 10:33:54
Problema Deque Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <deque>
#include <fstream>
using namespace std;
ifstream fin ("deque.in");
ofstream fout ("deque.out");
deque <int > d;
int a[5000001],n,k,s;
void citire()
{
    fin >> n >> k;
    for( int i = 0; i < n; i++)
        fin >> a[i];
}
void solve(int st, int dr)
{
    if ( dr >= n)
        return;
    int i = st;
    d.push_back(i++);
    while ( i <= dr)
    {
        if(a[i] > a[d.back()])
            d.push_back(i++);
        else
        {
            while(!d.empty() && a[i] < a[d.back()])
            d.pop_back();
            d.push_back(i++);

        }

    }
    int mini = d.front();
            if(mini >= st && mini <=dr)
            {
                s += a[mini];
                d.pop_front();

            }
    while(!d.empty())
    d.pop_back();

    solve(st + 1, dr + 1);



}

int main()
{
    citire();
    solve(0, k - 1);
    fout << s;
    return 0;
}