Cod sursa(job #2268487)

Utilizator CristyXtremeSimion Cristian CristyXtreme Data 24 octombrie 2018 21:05:59
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>
#include <deque>

using namespace std;

int v[5000000];

int main()
{
    FILE *f = fopen("deque.in", "r"), *g = fopen("deque.out", "w");
    int n, k;
    long long int s = 0;
    deque <int> poz;
    fscanf(f, "%i %i", &n, &k);
    for (int i = 0; i < n; i++)
        fscanf(f, "%i", &v[i]);
    poz.push_back(0);
    for (int i = 1; i < n; i++) {
        if (i - k + 1 > poz.back())
            poz.pop_back();
        if (v[poz.front()] < v[i])
            poz.push_front(i);
        else {
            while (!poz.empty() && v[poz.front()] > v[i])
                poz.pop_front();
            poz.push_front(i);
        }
        if (i + 1 >= k)
            s += v[poz.back()];
    }
    fprintf(g, "%lld", s);
    return 0;
}