Пример #1
0
 public static void Solve()
 {
     var(N, K) = Scanner.Scan <int, int>();
     Console.WriteLine(N % K > 0 ? 1 : 0);
 }
Пример #2
0
        public static void Solve()
        {
            var N = Scanner.Scan <int>();

            Console.WriteLine(N < 1000 ? "ABC" : "ABD");
        }
Пример #3
0
 public static void Solve()
 {
     var(N, K) = Scanner.Scan <int, int>();
     var WP = new (double, double)[N];
Пример #4
0
        public static void Solve()
        {
            var S = Scanner.Scan <string>();

            Console.WriteLine(S + "pp");
        }
Пример #5
0
 public static void Solve()
 {
     var(N, K) = Scanner.Scan <int, int>();
     var A = Scanner.ScanEnumerable <long>().ToArray();
 }
Пример #6
0
 public static void Solve()
 {
     var N = Scanner.Scan <int>();
     var S = new (long H, long W)[N];
Пример #7
0
        public static void Solve()
        {
            var S = Scanner.Scan <string>();

            Console.WriteLine(DateTime.Parse(S) <= DateTime.Parse("2019/04/30") ? "Heisei" : "TBD");
        }
Пример #8
0
 public static void Solve()
 {
     var N  = Scanner.Scan <int>();
     var T  = Scanner.Scan <string>();
     var D4 = new[] { (1, 0), (0, -1), (-1, 0), (0, 1) };
Пример #9
0
 public static void Solve()
 {
     var N = Scanner.Scan <int>();
     var C = new (long A, long B)[N];
Пример #10
0
 public static void Solve()
 {
     var N = Scanner.Scan <int>();
     var P = new (int X, int Y, int H)[N];
Пример #11
0
 public static void Solve()
 {
     var A = Scanner.Scan <long>();
     var S = Scanner.Scan <string>();
 }
Пример #12
0
 public static void Solve()
 {
     var(A, B, C) = Scanner.Scan <int, int, int>();
     Console.WriteLine(A == B && B == C ? "Yes" : "No");
 }
Пример #13
0
        public static void Solve()
        {
            var N    = Scanner.Scan <int>();
            var S    = Scanner.Scan <string>().ToCharArray();
            var Q    = Scanner.Scan <int>();
            var flip = false;

            while (Q-- > 0)
            {
                var(T, A, B) = Scanner.Scan <int, int, int>();
                A--; B--;
                if (T == 1)
                {
                    if (flip)
                    {
                        if (A / N != B / N)
                        {
                            if (A > B)
                            {
                                A -= N;
                                B += N;
                            }
                            else
                            {
                                B -= N;
                                A += N;
                            }
                        }
                        else
                        {
                            if (A / N == 0)
                            {
                                A += N;
                                B += N;
                            }
                            else
                            {
                                A -= N;
                                B -= N;
                            }
                        }
                    }

                    (S[A], S[B]) = (S[B], S[A]);
                }
                else
                {
                    flip = !flip;
                }
            }

            if (flip)
            {
                for (var i = 0; i < N; i++)
                {
                    (S[i], S[i + N]) = (S[i + N], S[i]);
                }
            }

            Console.WriteLine(new string(S));
        }
Пример #14
0
        public static void Solve()
        {
            var(N, M) = Scanner.Scan <int, int>();
            var G = new List <int> [N].Select(x => new List <int>()).ToArray();

            for (var i = 0; i < M; i++)
            {
                var(a, b) = Scanner.Scan <int, int>();
                a--; b--;
                G[a].Add(b);
                G[b].Add(a);
            }

            var K = Scanner.Scan <int>();
            var C = Scanner.ScanEnumerable <int>().Select(x => x - 1).ToArray();

            const int inf = (int)1e9;

            IEnumerable <int> Bfs(int s)
            {
                var costs = new int[N];

                Array.Fill(costs, inf);
                costs[s] = 0;

                var queue = new Queue <int>();

                queue.Enqueue(s);
                while (queue.Any())
                {
                    var u = queue.Dequeue();
                    foreach (var v in G[u])
                    {
                        if (costs[u] + 1 >= costs[v])
                        {
                            continue;
                        }
                        costs[v] = costs[u] + 1;
                        queue.Enqueue(v);
                    }
                }

                for (var i = 0; i < K; i++)
                {
                    yield return(costs[C[i]]);
                }
            }

            var costs = new int[K][];

            for (var i = 0; i < K; i++)
            {
                costs[i] = Bfs(C[i]).ToArray();
            }

            var dp = new int[1 << K][];

            for (var i = 0; i < 1 << K; i++)
            {
                dp[i] = new int[K];
                Array.Fill(dp[i], inf);
            }

            for (var i = 0; i < K; i++)
            {
                dp[1 << i][i] = 1;
            }

            for (var b1 = 0; b1 < 1 << K; b1++)
            {
                for (var i = 0; i < K; i++)
                {
                    if ((b1 >> i & 1) == 0)
                    {
                        continue;
                    }
                    var b2 = b1 ^ 1 << i;
                    for (var j = 0; j < K; j++)
                    {
                        if ((b2 >> j & 1) == 0)
                        {
                            continue;
                        }
                        dp[b1][i] = Math.Min(dp[b1][i], dp[b2][j] + costs[i][j]);
                    }
                }
            }

            var answer = dp[^ 1].Min();
Пример #15
0
        public static void Solve()
        {
            var N = Scanner.Scan <int>();
            var A = Scanner.ScanEnumerable <int>().ToArray();
            var G = new int[N][].Select(_ => new List <int>()).ToArray();

            for (var i = 0; i < N - 1; i++)
            {
                var(v1, v2) = Scanner.Scan <int, int>();
                v1--; v2--;
                G[v1].Add(v2);
                G[v2].Add(v1);
            }

            var answer = new int[N];
            var stack  = new int[N].Select(_ => int.MaxValue).ToArray();
            var length = 0;

            void Dfs(int current, int parent)
            {
                var l = -1;
                var r = length;

                while (r - l > 1)
                {
                    var m = l + (r - l) / 2;
                    if (stack[m] < A[current])
                    {
                        l = m;
                    }
                    else
                    {
                        r = m;
                    }
                }

                var prevLength = length;
                var prev       = stack[r];

                if (r >= length)
                {
                    length++;
                }
                stack[r]        = Math.Min(stack[r], A[current]);
                answer[current] = length;
                foreach (var child in G[current])
                {
                    if (child == parent)
                    {
                        continue;
                    }
                    Dfs(child, current);
                }
                length   = prevLength;
                stack[r] = prev;
            }

            Dfs(0, -1);

            Console.WriteLine(string.Join("\n", answer));
        }
Пример #16
0
 public static void Solve()
 {
     var(N, M) = Scanner.Scan <int, int>();
     var H = Scanner.ScanEnumerable <long>().ToArray();
     var G = new List <(int, long)> [N].Select(x => new List <(int, long)>()).ToArray();
Пример #17
0
 public static void Solve()
 {
     var(N, K) = Scanner.Scan <int, long>();
     var Q = new (long A, long B, long C)[N];
Пример #18
0
 public static void Solve()
 {
     var(N, M) = Scanner.Scan <int, int>();
     Console.WriteLine((N - 1) * (M - 1));
 }
Пример #19
0
        public static void Solve()
        {
            var S = Scanner.Scan <string>();

            Console.WriteLine(S.Count(x => x == '1'));
        }
Пример #20
0
        public static void Solve()
        {
            var R = Scanner.Scan <int>();

            Console.WriteLine(2 * R * Math.PI);
        }
Пример #21
0
 public static void Solve()
 {
     var(A, B) = Scanner.Scan <int, int>();
     var(C, D) = Scanner.Scan <int, int>();
     Console.WriteLine(B - C);
 }
Пример #22
0
        public static void Solve()
        {
            var       N      = Scanner.Scan <int>();
            const int inf    = (int)1e9;
            var       A      = new int[N];
            var       B      = new int[N];
            var       C      = Enumerable.Repeat(-inf, N).ToArray();
            var       info   = new bool[N * 2 + 1];
            var       answer = true;
            var       getOn  = Enumerable.Repeat(-inf, N * 2 + 1).ToArray();
            var       getOff = Enumerable.Repeat(-inf, N * 2 + 1).ToArray();

            for (var i = 0; i < N; i++)
            {
                var(a, b) = Scanner.Scan <int, int>();
                A[i]      = a;
                B[i]      = b;
                if (a > 0)
                {
                    if (info[a])
                    {
                        answer = false;
                    }
                    else
                    {
                        info[a] = true;
                    }
                    getOn[a] = i;
                }
                if (b > 0)
                {
                    if (info[b])
                    {
                        answer = false;
                    }
                    else
                    {
                        info[b] = true;
                    }
                    getOff[b] = i;
                }
                if (a > 0 && b > 0)
                {
                    if (b <= a)
                    {
                        answer = false;
                    }
                    C[i] = b - a - 1;
                }
            }
            if (!answer)
            {
                Console.WriteLine("No"); return;
            }
            var list = new List <int>();

            for (var n = 1; n <= N * 2 && answer; n++)
            {
                var on  = getOn[n];
                var off = getOff[n];
                if (on >= 0)
                {
                    if (C[on] != -inf)
                    {
                        if (list.Any(x => C[x] != C[on]))
                        {
                            answer = false;
                        }
                        else
                        {
                            list.Add(on);
                        }
                    }
                }

                if (off >= 0)
                {
                    list.Remove(off);
                }
            }

            Console.WriteLine(answer ? "Yes" : "No");
        }
Пример #23
0
        public static void Solve()
        {
            var(H, W) = Scanner.Scan <int, int>();
            var counts = new int[H][];
            var G      = new string[H];

            for (var i = 0; i < H; i++)
            {
                counts[i] = new int[W];
                G[i]      = Console.ReadLine();
            }
            for (var i = 0; i < H; i++)
            {
                for (var j = 0; j < W; j++)
                {
                    if (G[i][j] == '#')
                    {
                        counts[i][j] = -1;
                        continue;
                    }
                    if (i - 1 >= 0)
                    {
                        if (j - 1 >= 0 && G[i - 1][j - 1] == '#')
                        {
                            counts[i][j]++;
                        }
                        if (G[i - 1][j] == '#')
                        {
                            counts[i][j]++;
                        }
                        if (j + 1 < W && G[i - 1][j + 1] == '#')
                        {
                            counts[i][j]++;
                        }
                    }
                    if (i + 1 < H)
                    {
                        if (j - 1 >= 0 && G[i + 1][j - 1] == '#')
                        {
                            counts[i][j]++;
                        }
                        if (G[i + 1][j] == '#')
                        {
                            counts[i][j]++;
                        }
                        if (j + 1 < W && G[i + 1][j + 1] == '#')
                        {
                            counts[i][j]++;
                        }
                    }
                    if (j - 1 >= 0 && G[i][j - 1] == '#')
                    {
                        counts[i][j]++;
                    }
                    if (j + 1 < W && G[i][j + 1] == '#')
                    {
                        counts[i][j]++;
                    }
                }
            }
            Console.WriteLine(string.Join("\n", counts.Select(x => string.Join("", x).Replace("-1", "#"))));
        }
Пример #24
0
        public static void Solve()
        {
            var N = Scanner.Scan <int>();

            Console.WriteLine(N % 12 + 1);
        }
Пример #25
0
 public static void Solve()
 {
     var N = Scanner.Scan <int>();
     var A = new (int Idx, int T)[N];
Пример #26
0
        public static void Solve()
        {
            var N = Scanner.Scan <int>();

            Console.WriteLine(N % 2 == 0 ? "Blue" : "Red");
        }
Пример #27
0
 public static void Solve()
 {
     var(A, B, C) = Scanner.Scan <int, int, int>();
     Console.WriteLine(Math.Max(0, C - (A - B)));
 }
Пример #28
0
        public static void Solve()
        {
            var S = Scanner.Scan <string>();

            if (S == "a" || S == "zzzzzzzzzzzzzzzzzzzz")
            {
                Console.WriteLine("NO");
                return;
            }

            var rev = new string(S.Reverse().ToArray());

            if (rev != S)
            {
                Console.WriteLine(rev);
                return;
            }

            var s = 0;

            foreach (var c in S)
            {
                s += c - 'a' + 1;
            }

            if (s <= 26 && S.Length > 1)
            {
                var c = s - 1;
                Console.WriteLine((char)(c + 'a'));
                return;
            }

            var builder = new StringBuilder();

            while (s > 26)
            {
                builder.Append('z');
                s -= 26;
            }

            if (s == 1)
            {
                builder.Append('a');
            }
            else
            {
                if (builder.Length < 19)
                {
                    var c = (s - 2) % 26;
                    builder.Append((char)(c + 'a'));
                    builder.Append('a');
                }
                else
                {
                    var c = (s - 1) % 26;
                    builder.Append((char)(c + 'a'));
                }
            }

            var answer = builder.ToString();

            Console.WriteLine(answer);
        }
Пример #29
0
 public static void Solve()
 {
     var(A, B, C) = Scanner.Scan <int, int, int>();
     Console.WriteLine(Math.Min(C, B / A));
 }
Пример #30
0
 public static void Solve()
 {
     var(A, B) = Scanner.Scan <string, string>();
     Console.WriteLine(A == B ? "H" : "D");
 }