Cod sursa(job #2543449)

Utilizator csamoilasamoila ciprian casian csamoila Data 11 februarie 2020 10:16:41
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("deque.in");
ofstream fout("deque.out");

int n;
int x[5000001];
int st[5000001];
int dr[5000001];
int k;

int main()
{
    fin >> n >> k;
    for(int i=1;i<=n;i++)
    {
        fin >> x[i];
    }
    for(int i=n+1;i%k==0;i++)
    {
        n++;
        x[i]=2000000000;
    }
    for(int i=1;i<=n;i++)
    {
        if(i%k==1)
        {
            st[i]=x[i];
        }
        else
        {
            st[i]=min(st[i-1],x[i]);
        }
    }
    for(int i=n;i>=1;i--)
    {
        if(i%k==0)
        {
            dr[i]=x[i];
        }
        else
        {
            dr[i]=min(dr[i+1],x[i]);
        }
    }
    long long int rez=0;
    for(int i=1;i<=n-k+1;i++)
    {
        rez+=1LL*min(st[i+k-1],dr[i]);
    }
    fout << rez;
    fin.close();
    fout.close();
}