using
System;
using
System.Linq;
using
System.Collections.Generic;
class
GFG
{
static
void
ReplaceArray(
int
[] arr,
int
N,
int
K)
{
var
pq =
new
List<Tuple<
int
,
int
>>();
pq.Add(Tuple.Create(N, 0));
int
mid;
for
(
int
i = 1; i <= K; i++)
{
var
sub = pq[0];
pq.RemoveAt(0);
if
(sub.Item1 % 2 == 1) {
mid = sub.Item2 + sub.Item1 / 2;
arr[mid] = i;
pq.Add(Tuple.Create(sub.Item1 / 2,
sub.Item2));
pq.Add(Tuple.Create(sub.Item1 / 2,
(mid + 1)));
}
else
{
if
(i % 2 == 1) {
mid = sub.Item2 + sub.Item1 / 2;
arr[mid - 1] = i;
pq.Add(Tuple.Create(sub.Item1 / 2 - 1,
sub.Item2));
pq.Add(Tuple.Create(sub.Item1 / 2, mid));
}
else
{
mid = sub.Item2 + sub.Item1 / 2;
arr[mid - 1] = i;
pq.Add(Tuple.Create(sub.Item1 / 2,
sub.Item2));
pq.Add(Tuple.Create(sub.Item1 / 2 - 1,
(mid + 1)));
}
}
pq = pq.OrderBy(p => -p.Item1).ThenBy(p => -p.Item2).ToList();
}
for
(
int
i = 0; i < N; i++)
Console.Write( arr[i] +
" "
);
}
public
static
void
Main(
string
[] args)
{
int
[] arr = { 0, 0, 0, 0, 0 };
int
N = arr.Length;
int
K = 3;
ReplaceArray(arr, N, K);
}
}