static void Main(string[] args) { // create objects FileReader fr = new FileReader(); // read list of commands List<List<int>> commands = fr.getCommands("input.txt"); // prepare list of results List<int[]> results = new List<int[]>(); // prepare list of couriers List<FibHeap> couriers = new List<FibHeap>(); /* * loop thru commands * * commands are "documented" in FileReader.cs * */ foreach (List<int> command in commands) { if (command[0] == 1) { Console.WriteLine("Adding courier " + command[1]); connections.Add(command[1]); couriers.Add(new FibHeap()); } if (command[0] == 2) { Console.WriteLine("Adding to courier " + command[1] + " package id: " + command[2] + " prio: " + command[3]); couriers[findSlot(command[1])].Insert(command[3]); } if (command[0] == 3) { Console.WriteLine("Showing courier " + command[1] + " first package"); int package = couriers[findSlot(command[1])].ExtractMax(); int[] result = new int[2]; result[0] = command[1]; result[1] = package; results.Add(result); } if (command[0] == 4) { Console.WriteLine("Move packages from couirer " + command[1] + " to courier " + command[2]); couriers[findSlot(command[1])].Union(couriers[findSlot(command[2])]); couriers[findSlot(command[2])] = new FibHeap(); } } // print results fr.printResults("output.txt", results); //Console.ReadKey(); }
static void Main(string[] args) { // create objects PriorityQueue<int> pq = new PriorityQueue<int>(); FileReader fr = new FileReader(); // read list of commands List<List<int>> commands = fr.getCommands("input.txt"); // prepare list of results List<int[]> results = new List<int[]>(); // prepare list of couriers List<PriorityQueue<int>> couriers= new List<PriorityQueue<int>>(); /* * loop thru commands * * commands are "documented" in FileReader.cs * */ foreach (List<int> command in commands) { if (command[0] == 1) { Console.WriteLine("Adding courier " + command[1]); connections.Add(command[1]); couriers.Add(new PriorityQueue<int>()); } if (command[0] == 2) { Console.WriteLine("Adding to courier " + command[1] + " package id: " + command[2] + " prio: " + command[3]); couriers[findSlot(command[1])].Enqueue(command[2], command[3]); } if (command[0] == 3) { Console.WriteLine("Showing courier " + command[1] + " first package"); if (!couriers[findSlot(command[1])].Empty) { int prio = couriers[findSlot(command[1])].LastPrio(); int package = couriers[findSlot(command[1])].Dequeue(); Console.WriteLine("id: " + Convert.ToString(package) + " prio: " + Convert.ToString(prio)); int[] result = new int[2]; result[0] = command[1]; result[1] = package; results.Add(result); } } if (command[0] == 4) { Console.WriteLine("Move packages from couirer " + command[1] +" to courier " + command[2]); while (!couriers[findSlot(command[1])].Empty) { int prio = couriers[findSlot(command[1])].LastPrio(); int package = couriers[findSlot(command[1])].Dequeue(); couriers[findSlot(command[2])].Enqueue(package,prio); } } } // print results fr.printResults("output.txt", results); //Console.ReadKey(); }