Exemple #1
0
    public static void BlockOnGrid()
    {
        var(H, W) = IOLibrary.ReadInt2();

        var min = int.MaxValue;

        var A = new int[H][];

        for (var row = 0; row < H; row++)
        {
            A[row] = IOLibrary.ReadIntArray();

            for (var col = 0; col < A[row].Length; col++)
            {
                var num = A[row][col];
                if (num < min)
                {
                    min = num;
                }
            }
        }

        var sum = 0L;

        for (var row = 0; row < H; row++)
        {
            for (var col = 0; col < W; col++)
            {
                sum += A[row][col] - min;
            }
        }

        Console.WriteLine(sum);
    }
Exemple #2
0
    public static void Collinearity()
    {
        var N      = IOLibrary.ReadInt();
        var pArray = new Point[N];

        for (var i = 0; i < N; i++)
        {
            var(x, y) = IOLibrary.ReadInt2();
            var p = new Point(x, y);
            pArray[i] = p;
        }

        foreach (var indexArray in MathLibrary.GetCombinationIndexCollection(N, 3))
        {
            var p0   = pArray[indexArray[0]];
            var p1   = pArray[indexArray[1]];
            var p2   = pArray[indexArray[2]];
            var area = Point.CalcTriangleArea(p0 - p1, p0 - p2);
            if (area == 0)
            {
                Console.WriteLine(IOLibrary.YesOrNo(true));
                return;
            }
        }

        Console.WriteLine(IOLibrary.YesOrNo(false));
    }
Exemple #3
0
    public static void QueenOnGrid()
    {
        var(H, W) = IOLibrary.ReadInt2();
        var S = IOLibrary.ReadStringArray(H);

        var ans = new ModInt[H, W];

        //初期化
        ans[0, 0] = 1;
        for (var row = 1; row < H; row++)
        {
            if (S[row][0] != '#')
            {
                if (row == 1)
                {
                    ans[row, 0] = 1;
                }
                else
                {
                    ans[row, 0] = ans[row - 1, 0] * 2;
                }
            }
        }

        for (var col = 1; col < W; col++)
        {
            if (S[0][col] != '#')
            {
                if (col == 1)
                {
                    ans[0, col] = 1;
                }
                else
                {
                    ans[0, col] = ans[0, col - 1] * 2;
                }
            }
        }

        var horizontalSum = new ModInt[H, W];
        var verticlSum    = new ModInt[H, W];
        var diagonalSum   = new ModInt[H, W];

        //集計
        for (var row = 1; row < H; row++)
        {
            for (var col = 1; col < W; col++)
            {
                if (S[row][col] != '#')
                {
                    horizontalSum[row, col] = horizontalSum[row - 1, col] + ans[row - 1, col];
                    verticlSum[row, col]    = verticlSum[row, col - 1] + ans[row, col - 1];
                    diagonalSum[row, col]   = diagonalSum[row - 1, col - 1] + ans[row - 1, col - 1];
                    ans[row, col]           = horizontalSum[row, col] + verticlSum[row, col] + diagonalSum[row, col];
                }
            }
        }

        Console.WriteLine(ans[H - 1, W - 1]);
    }
Exemple #4
0
    public static void GoodDistance()
    {
        var(N, D) = IOLibrary.ReadInt2();
        var X = IOLibrary.ReadInt2DArray(N, D);

        var count = 0L;

        foreach (var pair in MathLibrary.GetCombinationIndexCollection(N, 2))
        {
            var i = pair[0];
            var j = pair[1];

            var squareLength = 0L;
            for (var index = 0; index < D; index++)
            {
                var dx = X[i, index] - X[j, index];
                squareLength += dx * dx;
            }
            var length = (int)Math.Sqrt(squareLength);
            if (length * length == squareLength)
            {
                count++;
            }
        }

        Console.WriteLine(count);
    }
Exemple #5
0
    public static void ThreePointShot()
    {
        var(X, Y) = IOLibrary.ReadInt2();
        var sub = Math.Abs(X - Y);

        Console.WriteLine(IOLibrary.YesOrNo(sub < 3));
    }
Exemple #6
0
    public static void LargeRPSTournament()
    {
        var(n, k) = IOLibrary.ReadInt2();
        var s         = IOLibrary.ReadLine();
        var queue     = new Queue <char>(s);
        var gameCount = 0;

        while (k > 0)
        {
            queue = ARC100.TwiceQueue(queue);

            var queueNum = queue.Count;
            while (queueNum > 0)
            {
                var a = queue.Dequeue();
                var b = queue.Dequeue();
                queueNum -= 2;
                var winner = ARC100.Judge(a, b);
                gameCount++;
                queue.Enqueue(winner);
            }

            if (gameCount >= k)
            {
                //第i回戦終了
                k--;
                gameCount = 0;
            }
        }

        var champion = queue.Dequeue();

        Console.WriteLine(champion);
    }
Exemple #7
0
    public static void ReversibleCards()
    {
        var N = IOLibrary.ReadInt();

        var abArray = IOLibrary.ReadInt2DArray(N);

        var max = 400000;
        var sum = new int[max];

        var ans = 0;

        for (var i = 0; i < N; i++)
        {
            var(a, b) = IOLibrary.ReadInt2();

            if (sum[a] == 0)
            {
                ans++;
            }
            else if (sum[b] == 0)
            {
                ans++;
            }
        }

        Console.WriteLine(ans);
    }
Exemple #8
0
    public static void Travel()
    {
        var(N, K) = IOLibrary.ReadInt2();
        var T = IOLibrary.ReadInt2DArray(N);

        var indexList = MathLibrary.GetPermutationIndex(Enumerable.Range(1, N - 1).ToArray());
        var count     = 0;

        foreach (var index in indexList)
        {
            var sumTime = 0;

            //末尾に終点0を追加
            var newIndexList = index.Concat(new int[] { 0 });

            var beforePoint = 0;

            foreach (var currentIndex in newIndexList)
            {
                var time = T[beforePoint][currentIndex];
                sumTime    += time;
                beforePoint = currentIndex;
            }

            if (sumTime == K)
            {
                count++;
            }
        }

        Console.WriteLine(count);
    }
Exemple #9
0
    public static void MixJuice()
    {
        var(N, K) = IOLibrary.ReadInt2();
        var p     = IOLibrary.ReadIntArray();
        var total = p.Sort().Take(K).Sum();

        Console.WriteLine(total);
    }
Exemple #10
0
    public static void Product()
    {
        var(a, b) = IOLibrary.ReadInt2();
        var c   = a * b;
        var ans = (c % 2 == 0) ? $"Even" : $"Odd";

        Console.WriteLine(ans);
    }
Exemple #11
0
    public static void Determinant()
    {
        var(a, b) = IOLibrary.ReadInt2();
        var(c, d) = IOLibrary.ReadInt2();
        var determinant = a * d - b * c;

        Console.WriteLine(determinant);
    }
Exemple #12
0
    static void Input()
    {
        {
            var str = IOLibrary.ReadLine();
        }

        {
            var N = IOLibrary.ReadInt();
        }

        {
            var(N, M) = IOLibrary.ReadInt2();
        }

        {
            var(N, M, K) = IOLibrary.ReadInt3();
        }

        {
            var numLong = IOLibrary.ReadLong();
        }

        {
            var(N, M) = IOLibrary.ReadLong2();
        }

        {
            var(N, M, K) = IOLibrary.ReadLong3();
        }

        {
            var input = IOLibrary.ReadIntArray();
        }

        {
            var input = IOLibrary.ReadLongArray();
        }

        {
            var list = IOLibrary.ReadIntList();
        }

        {
            var list = IOLibrary.ReadLongList();
        }

        {
            var N          = 1;
            var int2DArray = IOLibrary.ReadInt2DArray(N);
        }
        {
            var N           = 1;
            var long2DArray = IOLibrary.ReadLong2DArray(N);
        }
    }
Exemple #13
0
    /// <summary>
    /// 1
    /// </summary>
    public static void PowerSocket()
    {
        var(A, B) = IOLibrary.ReadInt2();
        if (B == 1)
        {
            Console.WriteLine(0);
            return;
        }

        var ans = (B - 2) / (A - 1) + 1;

        Console.WriteLine(ans);
    }
Exemple #14
0
    public static void Quizzes()
    {
        var(N, X) = IOLibrary.ReadInt2();
        var s = IOLibrary.ReadLine();

        foreach (var ans in s)
        {
            if (ans == 'o')
            {
                X++;
            }
            else if (ans == 'x')
            {
                X = Math.Max(X - 1, 0);
            }
        }

        Console.WriteLine(X);
    }
Exemple #15
0
    public static void Alcoholic()
    {
        var(N, X) = IOLibrary.ReadInt2();

        var total = 0;

        for (var i = 0; i < N; i++)
        {
            var(V, P) = IOLibrary.ReadInt2();

            total += V * P;
            if (total > X * 100)
            {
                Console.WriteLine(i + 1);
                return;
            }
        }

        Console.WriteLine(-1);
    }
Exemple #16
0
    public static void Otoshidama()
    {
        var(N, Y) = IOLibrary.ReadInt2();

        for (var x = 0; x <= N; x++)
        {
            for (var y = 0; y <= N; y++)
            {
                var z = N - x - y;
                if (z >= 0)
                {
                    var total = 10000 * x + 5000 * y + 1000 * z;
                    if (total == Y)
                    {
                        Console.WriteLine($"{x} {y} {z}");
                        return;
                    }
                }
            }
        }

        Console.WriteLine($"-1 -1 -1");
    }
Exemple #17
0
    /// <summary>
    /// 12
    /// </summary>
    public static void TravelingSalesmanAroundLake()
    {
        var(K, N) = IOLibrary.ReadInt2();
        var A = IOLibrary.ReadModIntArray(K);

        var ans        = ModInt.Max;
        var startIndex = 0;

        do
        {
            var start  = A[startIndex];
            var goal   = A[(startIndex + N - 1) % N];
            var length = goal - start;
            if (length < ans)
            {
                ans = length;
            }
            startIndex++;
            startIndex %= N;
        } while (startIndex != 0);

        Console.WriteLine(ans);
    }
Exemple #18
0
    public static void BowlsAndDishes()
    {
        var(N, M) = IOLibrary.ReadInt2();
        var AB = IOLibrary.ReadInt2DArray(M, 2);
        var K  = IOLibrary.ReadInt();
        var CD = IOLibrary.ReadInt2DArray(K, 2);

        var maxCount = 0;

        for (var bit = 0; bit < (1 << K); bit++)
        {
            var dish = new int[N];
            for (var i = 0; i < K; i++)
            {
                var index = MathLibrary.TestBit(bit, i) ? 1 : 0;
                var cd    = CD[i, index] - 1;
                dish[cd]++;
            }

            //集計
            var count = 0;
            for (var i = 0; i < M; i++)
            {
                var a = AB[i, 0] - 1;
                var b = AB[i, 1] - 1;

                if (dish[a] > 0 && dish[b] > 0)
                {
                    count++;
                }
            }

            maxCount = Math.Max(maxCount, count);
        }

        Console.WriteLine(maxCount);
    }
Exemple #19
0
 public static void LargeDigits()
 {
     var(A, B) = IOLibrary.ReadInt2();
     Console.WriteLine(Math.Max(MathLibrary.SumOfDigits(A), MathLibrary.SumOfDigits(B)));
 }
Exemple #20
0
 public static void Brick()
 {
     var(N, W) = IOLibrary.ReadInt2();
     Console.WriteLine(N / W);
 }