Cod sursa(job #3264403)

Utilizator Arunn_AzyzAnichitoaie Arun Arunn_Azyz Data 20 decembrie 2024 23:36:14
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <deque>
#include <fstream>
using namespace std;
ifstream fi("deque.in");
ofstream fo("deque.out");
deque<pair<int,int>>dq;
int N,K,x;
int v[5000005];
void afisare(){
    for(auto x:dq){
        cout<<x.first<<' ';
    }
    cout<<endl;
}
int main()
{

    fi>>N>>K;
    long long  sum=0;
    for(int i=1;i<=N;i++){
        fi>>v[i];
    }
    for(int i=1;i<=N;i++){
        while(!dq.empty()&&dq.front().second<i-K+1){ ///stergi ce nu mai e in subsecventa
            dq.pop_front();
        }
        while(!dq.empty()&&dq.back().first>v[i]){ ///cat timp ai la spatele cozii un element mai mare decat cel curent
            dq.pop_back();
        }
        dq.push_back(make_pair(v[i],i));///pui in coada o valoare de element si un index
        if(i>=K){
            sum=sum+dq.front().first; ///adaugi valoarea celui mai mic element din subsecventa
        }

    }
   fo<<sum;



}