using
System;
using
System.Collections.Generic;
class
GFG{
static
int
smallSubarray(
int
[]arr,
int
n,
int
total_sum)
{
Dictionary<
int
,
int
> m =
new
Dictionary<
int
,
int
>();
int
length =
int
.MaxValue;
int
prefixSum = 0;
for
(
int
i = 0; i < n; i++)
{
prefixSum += arr[i];
if
(prefixSum == total_sum)
{
length = Math.Min(length, i + 1);
}
if
(m.ContainsKey(prefixSum))
m[prefixSum] = i;
else
m.Add(prefixSum, i);
if
(m.ContainsKey(prefixSum - total_sum))
{
length = Math.Min(length,
i - m[prefixSum -
total_sum]);
}
}
return
length;
}
static
int
smallestSubarrayremoved(
int
[]arr,
int
n,
int
k)
{
int
total_sum = 0;
for
(
int
i = 0; i < n; i++)
{
if
(arr[i] > k)
{
arr[i] = 1;
}
else
if
(arr[i] < k)
{
arr[i] = -1;
}
else
{
arr[i] = 0;
}
total_sum += arr[i];
}
if
(total_sum == 0)
{
return
0;
}
else
{
return
smallSubarray(arr, n, total_sum);
}
}
public
static
void
Main(String[] args)
{
int
[]arr = { 12, 16, 12, 13, 10 };
int
K = 13;
int
n = arr.Length;
Console.WriteLine(
smallestSubarrayremoved(arr, n, K));
}
}