using System.Collections.Generic;
public class SeatReserver
private PriorityQueue<int, int> availableSeats;
public SeatReserver(int n) {
availableSeats = new PriorityQueue<int, int>();
for (int i = 1; i <= n; i++)
availableSeats.Enqueue(i, i);
if (availableSeats.Count == 0)
throw new Exception("There are no more available seats.");
return availableSeats.Dequeue();
public void Unreserve(int num) {
throw new Exception("Num is larger than the max size N.");
availableSeats.Enqueue(num, num);
private static void Print(int n)
Console.WriteLine(n.ToString());
public static void Main()
Console.WriteLine("UniLecs");
var seatReserver = new SeatReserver(5);
Print(seatReserver.Reserve());
Print(seatReserver.Reserve());
seatReserver.Unreserve(2);
Print(seatReserver.Reserve());
Print(seatReserver.Reserve());
Print(seatReserver.Reserve());
Print(seatReserver.Reserve());
Print(seatReserver.Reserve());
seatReserver.Unreserve(6);