Cod sursa(job #2029089)

Utilizator Horea_Mihai_SilaghiHorea Mihai Silaghi Horea_Mihai_Silaghi Data 29 septembrie 2017 11:25:03
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
#include <deque>

using namespace std;

deque <pair <int, int>> coada;
int v[5000001];

ifstream fin ("deque.in");
ofstream fout ("deque.out");

int main()
{
    int n, k, cnt = 0;
    long long suma = 0;
    fin>>n>>k;
    for ( int i = 1; i <= n; ++i )
        fin>>v[i];
    for ( int i = 1; i <= n; ++i )
    {
        while ( coada.empty() == 0 && coada.back().first > v[i])
            coada.pop_back();
        while ( coada.front().second <= i-k && coada.empty() == 0 )
            coada.pop_front();
        coada.push_back({v[i], i});
        if ( i >= k )
            suma += coada.front().first;
    }
    fout<<suma;
}