Cod sursa(job #1912877)

Utilizator zeboftwAlex Mocanu zeboftw Data 8 martie 2017 11:01:24
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <deque>

using namespace std;

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

struct val {
    int long long info;
    int idx;
};

deque<val> maxim;

int main()
{
    int n, k;
    int long long sum = 0;
    val x;

    fin >> n >> k;

    for (int i=1; i <= k; i++) {
        fin >> x.info;
        x.idx = i;
        while (!maxim.empty() && x.info <= maxim.back().info) {
            maxim.pop_back();
        }
        maxim.push_back(x);
    }

    for (int i=1; i <= n-k+1; i++) {
        fin >> x.info;
        x.idx = i+k;
        //cout << maxim.front().info << ' ' << sum << ' ';
        sum += maxim.front().info;
        while (!maxim.empty() && x.info <= maxim.back().info) {
            maxim.pop_back();
        }
        maxim.push_back(x);
        if (maxim.front().idx == i) maxim.pop_front();
    }

    fout << sum;

    return 0;
}