Cod sursa(job #2379397)

Utilizator arosearose red arose Data 13 martie 2019 15:11:18
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <deque>
#include <cstdio>
#include <vector>
#define ll long long int
#define min(a,b) (a<b ? a : b)

using namespace std;
void rezolvare()
{
    ll suma = 0;
    FILE *fin = fopen("deque.in", "r");
    FILE *fout = fopen("deque.out", "w");
    int n,k,minim,tmp;
    fscanf(fin, "%d %d", &n, &k);
    deque<int> deck;
    vector<int> vec;
    for (int i=0;i<n;i++)
    {
        fscanf(fin, "%d", &tmp);
        vec.push_back(tmp);
        while (deck.size()>0 && vec[deck.back()]>=vec[i])
        {
            deck.pop_back();
        }
        deck.push_back(i);
        while (deck.size()>0 && deck.front()<=i-k)
        {
            deck.pop_front();
        }
        if (i>=k-1)
        {
            suma += vec[deck.front()];
        }
    }
    fprintf(fout, "%lld", suma);
}
int main()
{
    rezolvare();
    return 0;
}