Cod sursa(job #1717917)

Utilizator TwoOfDiamondsDaniel Alexandru Radu TwoOfDiamonds Data 16 iunie 2016 07:22:00
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <cstdio>
#include <deque>
 
using namespace std;
 
struct punct
{
    int val;
    int poz;
};
 
int main()
{
    //fstream in("deque.in");
    //ofstream out("deque.out");
 
    FILE *in = fopen ("deque.in", "r");
    FILE *out = fopen("deque.out", "w");

    deque<punct> coada;
    long long sum = 0;
    int n, k; //in >> n >> k;
    fscanf(in, "%d", &n);
    fscanf(in, "%d", &k);
 
    for (int i = 1; i <= n; i++)
    {
        //int x; in >> x;
        int x;
        fscanf(in, "%d", &x);
        punct p; p.poz = i; p.val = x;
 
        while (!coada.empty() && p.val <= coada.back().val) coada.pop_back();
 
        coada.push_back(p);
 
        if (coada.front().poz == i - k) coada.pop_front();
 
        if (i >= k)
            sum += coada.front().val;
 
    }
 
    //out << sum;
    fprintf(out, "%lld\n", sum);
    return 0;
 
}