Пример #1
0
        void Solve(StreamScanner ss, StreamWriter sw)
        {
            //---------------------------------
            var comb = new Combination(100010);
            var N    = ss.Next(int.Parse) + 1;
            var A    = ss.Next(int.Parse, N);

            var cnt = new int[N];

            foreach (var a in A)
            {
                cnt[a]++;
            }
            var dup   = Array.IndexOf(cnt, 2);
            var left  = Array.IndexOf(A, dup);
            var right = Array.LastIndexOf(A, dup);
            var M     = N + left - right - 1;

            for (var i = 1; i <= N; i++)
            {
                sw.WriteLine(comb.NCK(N, i) - comb.NCK(M, i - 1));
            }
            //---------------------------------
        }