示例#1
0
    static void Main()
    {
        var n = int.Parse(Console.ReadLine());
        var l = Read();

        var set = new IndexedMultiSet <int>();

        foreach (var x in l)
        {
            set.Add(x);
        }

        Array.Sort(l);

        var r = 0;

        for (int i = 0; i < n; i++)
        {
            for (int j = i + 1; j < n; j++)
            {
                r += set.GetLastIndex(x => x < l[i] + l[j]) - j;
            }
        }
        Console.WriteLine(r);
    }
示例#2
0
    static object Solve()
    {
        var(n, k) = Read2();
        var s = Console.ReadLine();

        var r = new List <char>();

        var comp = Comparer2 <int> .Create(i => s[i], i => i);

        var set = new IndexedMultiSet <int>(comp);

        for (int i = 0; i < n - k; i++)
        {
            set.Add(i);
        }

        var t = -1;

        for (int i = n - k; i < n; i++)
        {
            set.Add(i);
            while (set.GetFirst() < t)
            {
                set.RemoveAt(0);
            }

            t = set.RemoveAt(0);
            r.Add(s[t]);
        }

        return(string.Join("", r));
    }
        private void Start()
        {
            list = new List <int>(count);
            set  = new HashSet <int>(new IntComparer());
            var comparer = new IntComparer();

            indexedSet = new IndexedSet <int>(count, comparer);
            multiSet   = new IndexedMultiSet <int>(count, comparer);
            data       = new int[count];
        }
示例#4
0
    static void Main()
    {
        var n  = int.Parse(Console.ReadLine());
        var ss = Array.ConvertAll(new bool[n], _ => Console.ReadLine());

        var comp = Comparer2 <string> .Create(s => s.TrimStart('0').Length, s => s.TrimStart('0'), s => - s.Length);

        var set = new IndexedMultiSet <string>(comp);

        foreach (var s in ss)
        {
            set.Add(s);
        }

        Console.WriteLine(string.Join("\n", set));
    }
示例#5
0
    static void Main()
    {
        var n = int.Parse(Console.ReadLine());

        var set = new IndexedMultiSet <int>();

        Console.SetOut(new System.IO.StreamWriter(Console.OpenStandardOutput())
        {
            AutoFlush = false
        });
        while (n-- > 0)
        {
            var q = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
            if (q[0] == 0)
            {
                set.Add(q[1]);
                Console.WriteLine(set.Count);
            }
            else if (q[0] == 1)
            {
                Console.WriteLine(set.GetCount(q[1]));
            }
            else if (q[0] == 2)
            {
                while (set.RemoveOne(q[1]))
                {
                    ;
                }
            }
            else
            {
                foreach (var x in set.GetItems(x => x >= q[1], x => x <= q[2]))
                {
                    Console.WriteLine(x);
                }
            }
        }
        Console.Out.Flush();
    }