Cod sursa(job #2489814)

Utilizator TigoanMateiTigoan Matei-Daniel TigoanMatei Data 9 noiembrie 2019 12:04:29
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <deque>
#include <vector>
#include <fstream>

using namespace std;

deque< int > deq;
long long n, k, ans;
vector< int >v;

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

int main()
{
    fin >> n >> k;
    for(int i = 1 ; i <= n ; i++)
    {
        int x;
        fin >> x;
        v.push_back( x );
    }

    for( int i = 0 ; i < k - 1 ; i++ )
    {
        while( !deq.empty() && v[ deq.back() ] > v[ i ] )
            deq.pop_back();
        deq.push_back( i );
    }
    /// indexam de la 0
    for(int i = k - 1 ; i < v.size() ; i++ )
    {
        /// numarul a iesit din secventa sliding-window
        if( i - deq.front() == k )
            deq.pop_front();

        while( !deq.empty() && v[ deq.back() ] > v[i] )
            deq.pop_back();
        deq.push_back( i );

        /// miniul se va afla in deq.front()
        ans += v[ deq.front() ];
    }
    fout << ans;
}