using
System;
using
System.Collections.Generic;
class
GFg {
static
void
minimiseDifference(List<
int
> arr,
int
K)
{
int
N = arr.Count;
int
[] maxSuffix =
new
int
[N + 1];
int
[] minSuffix =
new
int
[N + 1];
maxSuffix[N] = -1000000000;
minSuffix[N] = 1000000000;
maxSuffix[N - 1] = arr[N - 1];
minSuffix[N - 1] = arr[N - 1];
for
(
int
i = N - 2; i >= 0; --i) {
maxSuffix[i]
= Math.Max(maxSuffix[i + 1], arr[i]);
minSuffix[i]
= Math.Min(minSuffix[i + 1], arr[i]);
}
int
maxPrefix = arr[0];
int
minPrefix = arr[0];
int
minDiff = maxSuffix[K] - minSuffix[K];
for
(
int
i = 1; i < N; ++i) {
if
(i + K <= N) {
int
maximum
= Math.Max(maxSuffix[i + K], maxPrefix);
int
minimum
= Math.Min(minSuffix[i + K], minPrefix);
minDiff
= Math.Min(minDiff, maximum - minimum);
}
maxPrefix = Math.Max(maxPrefix, arr[i]);
minPrefix = Math.Min(minPrefix, arr[i]);
}
Console.WriteLine(minDiff);
}
public
static
void
Main()
{
List<
int
> arr
=
new
List<
int
>() { 4, 5, 8, 9, 1, 2 };
int
K = 2;
minimiseDifference(arr, K);
}
}