Cod sursa(job #2755695)

Utilizator pielevladutPiele Vladut Stefan pielevladut Data 27 mai 2021 23:11:45
Problema Schi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>

#define int long long

using namespace std;

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

int n, k, ans = LLONG_MAX;
int v[1001001];
int dif[1001001];
int dq[1001001];
int st, dr;

int32_t main()
{
    cin >> n >> k;
    for(int i = 1; i <= n; i ++)
    {
        cin >> v[i];
    }
    for(int i = 1; i <= n; i ++)
    {
        if(i <= n)
            dif[i] = v[i+1] - v[i];
    }
    st = 1;
    dr = 0;
    for(int i = 1; i < n; i ++)
    {
        while(st <= dr && dif[dq[dr]] < dif[i])
        {
            dr--;
        }
        while(st <= dr && dq[st] <= i - (n - k - 1))
        {
            st++;
        }
        dq[++dr] = i;
        if(dif[dq[st]] < ans && i >= (n - k - 1))
            ans = dif[dq[st]];
    }
    cout << ans << '\n';
    return 0;
}