示例#1
0
    void Solve()
    {
        /*var hoge = new List<int>();
         * for (var i = 0; i < 20; i++) hoge.Add(Treap<int>.rand.Next(100));
         * var tr = new Treap<int>();
         * foreach (var x in hoge) tr.Insert(x);
         * WriteLine("hoge = " + string.Join(", ", hoge));
         * WriteLine("tr   = " + string.Join(", ", tr));
         * hoge.Sort();
         * WriteLine("hoge = " + string.Join(", ", hoge));
         * WriteLine(tr);
         * var a = hoge[Treap<int>.rand.Next(20)];
         * tr.Remove(a);
         * WriteLine($"removed {a}");
         * WriteLine(tr);*/
        var Q  = F;
        var tr = new Treap <int>();

        while (Q-- > 0)
        {
            var I = G;
            if (I[0] == 1)
            {
                tr.Insert(I[1]);
            }
            else
            {
                var x = tr.At(I[1] - 1);
                WriteLine(x.Value);
                tr.Remove(x.Value);
            }
        }
    }