public void Bst() { var n = 100000; var a = RandomHelper.CreateData(n); var expected = (int[])a.Clone(); var actual = new List <int>(); var q = new BstPriorityQueue <int>(); foreach (var x in a) { q.Push(x); } while (q.Count > 0) { actual.Add(q.Pop()); } Array.Sort(expected); CollectionAssert.AreEqual(expected, actual); actual.Clear(); q = new BstPriorityQueue <int>(ComparerHelper <int> .Create(true)); foreach (var x in a) { q.Push(x); } while (q.Count > 0) { actual.Add(q.Pop()); } Array.Reverse(expected); CollectionAssert.AreEqual(expected, actual); }
static void Main() { var qc = int.Parse(Console.ReadLine()); var pq = new BstPriorityQueue <long>(); var d = 0L; Console.SetOut(new System.IO.StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false }); while (qc-- > 0) { var q = Read(); if (q[0] == 1) { pq.Push(q[1] - d); } else if (q[0] == 2) { d += q[1]; } else { Console.WriteLine(pq.Pop() + d); } } Console.Out.Flush(); }