using
System;
using
System.Collections.Generic;
public
class
GFG {
static
void
findDifferenceArray(
int
[]arr,
int
N) {
Dictionary<
int
,
int
> leftMap =
new
Dictionary<
int
,
int
>();
Dictionary<
int
,
int
> rightMap =
new
Dictionary<
int
,
int
>();
for
(
int
i = 0; i < N; i++) {
if
(rightMap.ContainsKey(arr[i]))
rightMap[arr[i]] = rightMap[arr[i]] + 1;
else
rightMap.Add(arr[i], 1);
}
List<
int
> res =
new
List<
int
>();
for
(
int
i = 0; i < N; i++) {
int
countLeft = leftMap.Count;
if
(rightMap[arr[i]] > 1) {
rightMap[arr[i]] = rightMap[arr[i]] - 1;
}
else
{
rightMap.Remove(arr[i]);
}
int
countRight = rightMap.Count;
res.Add(Math.Abs(countRight - countLeft));
if
(leftMap.ContainsKey(arr[i]))
leftMap[arr[i]]= leftMap[arr[i]] + 1;
else
leftMap.Add(arr[i], 1);
}
foreach
(
int
it
in
res) {
Console.Write(it +
" "
);
}
}
public
static
void
Main(String[] args) {
int
[]arr = { 7, 7, 3, 2, 3 };
int
N = arr.Length;
findDifferenceArray(arr, N);
}
}