Cod sursa(job #3312844)

Utilizator alexandra_peneaPenea Alexandra Maria alexandra_penea Data 30 septembrie 2025 11:01:33
Problema Deque Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
using namespace std;
 ifstream fin("deque.in");
 ofstream fout("deque.out");
 long long v[5000001];
 long long d[5000001]; //v[d[p]] <v[d[p+1]] <....<v[d[u]]
int main()
{   int n;
    int k;
    fin>>n>>k;
    for(int i=1; i<=n; i++) fin>>v[i];
    long long s=0;
    int p, u;
    p=1; u=1;
    d[1]=1;
    for(int i=2; i<=k; i++){
        while( v[d[u]]>=v[i] && p<=u){
            u--;
        }
        u++;
        d[u]=i;//imi baga cel mai recent elem
    }
    s=s+ v[d[p]];//primul din deque

    for(int i=k+1; i<=n; i++){
        while(v[d[u]]>=v[i] && p<=u){
            u--;
        }
        u++;
        d[u]=i; //actualizez ultimul elem
        if(d[p]< i-k+1) p++; //actualizez primul pt ca la un moment dat va iesi din secventa
        s=s+v[d[p]];

    }
    fout<<s;


    return 0;
}