Cod sursa(job #2375582)

Utilizator SweetHumanAvram Gheorghe SweetHuman Data 8 martie 2019 10:51:25
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <deque>
#include <vector>
using namespace std;
ifstream f1("deque.in");
ofstream f2("deque.out");

const int MAXN = 5000005;

vector<int> a;
deque<int> indiciPoz;
//turn deque into struct to make it more efficient
int k,n;
long long suma=0;
int main(){
    f1>>n>>k;
    for(int i=0;i<n;i++){
        int x;
        f1>>x;
        a.push_back(x);
    }
    indiciPoz.push_front(0);
    for(int i=1;i<k;i++){
        while(!indiciPoz.empty() && a[i]<a[indiciPoz.back()]){
            indiciPoz.pop_back();
        }
        indiciPoz.push_back(i);
    }
    suma+=(long long)a[indiciPoz.front()];
    for(int i=k;i<n;i++){
        if(i-k>=indiciPoz.front())
            indiciPoz.pop_front();
        while(!indiciPoz.empty() && a[i]<a[indiciPoz.back()])
            indiciPoz.pop_back();
        indiciPoz.push_back(i);
        suma+=a[indiciPoz.front()];
    }
    f2<<suma;
    return 0;
}