Cod sursa(job #2543482)

Utilizator berindecodrinCodrin Berinde berindecodrin Data 11 februarie 2020 10:33:52
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>

using namespace std;
int N,K;
int A[5000002];
int ST[5000002];
int DR[5000002];

int main()
{
    ifstream fi("deque.in");
    ofstream fo("deque.out");
    fi >> N >> K;
    for(int i = 1; i <= N; i++)
        fi >> A[i];
    /// se construieste sirul ST
    ST[0] = 2000000000;
    for(int i = 1; i <= N; i++)
    {
        if(i%K == 1)
            ST[i] = A[i];
        else
            ST[i] = min(ST[i-1],A[i]);
    }
    /// se construieste sirul DR
    DR[N+1] = 2000000000;
    DR[N] = A[N];
    for(int i = N-1; i >= 1; i--)
    {
        if (i%K == 0)
            DR[i] = A[i];
        else
            DR[i] = min(DR[i+1],A[i]);
    }
    long long rez;
    rez = 0;
    int a,b;
    a = 1;
    b = K;
    while(b <= N)
    {
        rez = rez+min(DR[a],ST[b]);
        a++;
        b++;
    }
    fo << rez;

    fi.close();
    fo.close();
    return 0;
}