Cod sursa(job #2544879)

Utilizator ilucianIlea Lucian ilucian Data 12 februarie 2020 17:06:55
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#define INF 2000000000
using namespace std;
ifstream fi("deque.in");
ofstream fo("deque.out");
long long rez;
int N,K;
int A[5000002];
int ST[5000002];
int DR[5000002];

int main()
{
    fi>>N>>K;
    for (int i=1;i<=N;i++)
        fi>>A[i];
    /// se construieste ST
    ST[0]=INF;
    for (int i=1;i<=N;i++)
        if (i%K==1)
            ST[i]=A[i];
        else
            ST[i]=min(A[i],ST[i-1]);
    /// se construieste DR
    DR[N+1]=INF;
    DR[N]=INF;
    for (int i=N-1;i>=1;i--)
        if (i%K==0)
            DR[i]=A[i];
        else
            DR[i]=min(A[i],DR[i+1]);
    int a,b;
    a=1;
    b=K;
    rez=0;
    while (b<=N)
    {
        rez=rez+min(DR[a],ST[b]);
        a++;
        b++;
    }
    fo<<rez;
    fi.close();
    fo.close();
    return 0;
}