Cod sursa(job #3140194)

Utilizator dragutamihai1234Draguta Mihai dragutamihai1234 Data 4 iulie 2023 18:04:22
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
// ifstream cin("")
int v[5000001];
deque <int> dq;
// ind = dq.front()    ind= dq.back()
//dq.pop_front()  dq.push_front()

int main()
{
    ifstream cin("deque.in");
    ofstream cout("deque.out");
    int n, k;
    cin >> n >> k;
    for(int i = 1; i <= k; i++)
    {
        cin >> v[i];
        while(!dq.empty() && v[dq.back()] >= v[i])
            dq.pop_back();
        dq.push_back(i);
    }
    //    sunt la v[i]
    //   v[i-k+1]........v[i]
    //   indicele minimului este primul element din deque
    long long s = v[ dq.front() ];
    // 5 000 000 * 4 octeti = 20 milioane = 20 MB
    for(int i = k + 1; i <= n; i++)
    {
        cin >> v[i];
        while(!dq.empty() && v[dq.back()] >= v[i])
            dq.pop_back();
        dq.push_back(i);
        if(dq.front() == i - k)dq.pop_front();
        s += v[dq.front()];
    }
    cout << s;
    return 0;
}