Cod sursa(job #2091912)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 20 decembrie 2017 16:03:08
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#include <deque>
#include <iostream>
using namespace std;

#define MAXN 5000000+10

int v[MAXN];
deque<int> dq;

void push_deque(int i){
    while(!dq.empty() && v[dq.back()] > v[i]) dq.pop_back();
    dq.push_back(i); }

void pop_deque(int i){
    if(!dq.empty() && dq.front() == i) dq.pop_front(); }

int main(){
    ifstream f("deque.in");
    ofstream g("deque.out");
    int n, k;
    f >> n >> k;

    for(int i = 0; i < n; ++i) f >> v[i];

    long long rez = 0;
    for(int st = -k, dr = 0; dr < n; ++st, ++dr){
        push_deque(dr);
        pop_deque(st);
        if(st >= -1) rez += v[dq.front()]; }
    g << rez << endl;
    cout << rez << endl;
    return 0;
}