Cod sursa(job #2543465)

Utilizator marcumihaiMarcu Mihai marcumihai Data 11 februarie 2020 10:25:48
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>

using namespace std;
ifstream f ("deque.in");
ofstream g ("deque.out");
int N,K;
int A[5000002];
int ST[5000002];
int DR[5000002];
int main()
{
    f>>N>>K;
    for(int i=1; i<=N; ++i)
        f>>A[i];
    ///se construieste sirul st
    ST[0]=200000000;
    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 dr
    DR[0]=200000000;
    DR[N+1]=200000000;
    for(int i=N; i>0; --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=1,b=K;
    while(b<=N)
    {
        rez=rez+min(DR[a],ST[b]);
        a++;
        b++;
    }g<<rez;
    f.close();
    g.close();
    return 0;
}