Cod sursa(job #2453645)

Utilizator mirceatlxhaha haha mirceatlx Data 4 septembrie 2019 22:16:17
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>
#include <fstream>
#include <deque>
#include <vector>
#define maxVectorSize 5000005
using namespace std;

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

int listNumber, seqNumber;
long long result = 0;
deque <int> Dq;
vector <int> vec(maxVectorSize);

int main()
{
    int listElement;
    fin >> listNumber >> seqNumber;
    for(int i = 1; i <= listNumber ; i++)
    {
        fin >> listElement;
        vec[i] = listElement;
    }
    Dq.push_back(1);//pushing into the deque the first element
    for(int i = 2 ; i <= seqNumber ; i++)
    {
        while(!Dq.empty() && vec[i] <= vec[Dq.back()])
            Dq.pop_back();
        Dq.push_back(i);
    }
    result += vec[Dq.front()];
    for(int i = seqNumber + 1 ; i <= listNumber ; i++)
    {
        while(!Dq.empty() && i - Dq.front() >= seqNumber)// removing all the elements that doesn t belong to the current sequence
            Dq.pop_front();
        while(!Dq.empty() && vec[i] <= vec[Dq.back()])
            Dq.pop_back();
        Dq.push_back(i);
        result += vec[Dq.front()];
        
    }

    fout << result << "\n";
    return 0;
}