Cod sursa(job #2831332)

Utilizator AxicaVirtosu Alexandra Mihaela Axica Data 11 ianuarie 2022 10:22:49
Problema Deque Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>

using namespace std;
const int NMAX=5e6;
int n, k, v[NMAX+3];
int  dq[NMAX+3], p=1, u=0;///in deque tin minte indici pt a putea calcula daca lungimea secventei cu minimul gasit in d[p] este k
long long sol;
int main()
{
    ifstream fin ("deque.in");
    ofstream fout ("deque.out");
    fin>>n>>k;
    for(int i=1; i<=n; i++)
        fin>>v[i];
    for(int i=1; i<=n; i++)
    {
        while(u>0 && v[i]<=v[dq[u]])
            u--;
        dq[++u]=i;
        if(i-dq[p]+1>k)///distanta indicilor de la ind i la ind dq[p]  al minimului este exact k+1
            p++;

        /// indicele minimul pt fiecare subsecventa de lungime k terminata pe poz i se afla in dq[p]

        if(i>=k)///exista o subsecventa de lungime k terminata pe poz i
            sol+=v[dq[p]];

    }
    fout<<sol;

    return 0;
}