Esempio n. 1
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);
    }
Esempio n. 2
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);
    }
Esempio n. 3
0
    public static void GentlePairs()
    {
        var N      = IOLibrary.ReadInt();
        var points = IOLibrary.ReadInt2DArray(N);

        var ans = 0;

        for (var i = 0; i < N; i++)
        {
            for (var j = i + 1; j < N; j++)
            {
                if (i < j)
                {
                    var pointI = points[i];
                    var pointJ = points[j];

                    var dx = Math.Abs(pointI[0] - pointJ[0]);
                    var dy = Math.Abs(pointI[1] - pointJ[1]);
                    if (dx >= dy)
                    {
                        ans++;
                    }
                }
            }
        }

        Console.WriteLine(ans);
    }
Esempio n. 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);
    }
Esempio n. 5
0
    /// <summary>
    /// 7
    /// </summary>
    public static void Bingo()
    {
        var gridNum = 3;
        var A       = IOLibrary.ReadInt2DArray(gridNum, gridNum);
        var N       = IOLibrary.ReadInt();
        var b       = new int[N];

        for (var i = 0; i < N; i++)
        {
            b[i] = IOLibrary.ReadInt();
        }

        var judgeList = new bool[gridNum, gridNum];

        for (var i = 0; i < gridNum; i++)
        {
            for (var j = 0; j < gridNum; j++)
            {
                //数字をマーク
                var num = A[i, j];
                if (b.Contains(num))
                {
                    judgeList[i, j] = true;
                }
            }
        }

        //ビンゴかどうかチェック
        //横
        for (var i = 0; i < gridNum; i++)
        {
            if (judgeList[i, 0] & judgeList[i, 1] & judgeList[i, 2])
            {
                Console.WriteLine(IOLibrary.YesOrNo(true));
                return;
            }
        }

        //縦
        for (var i = 0; i < gridNum; i++)
        {
            if (judgeList[0, i] & judgeList[1, i] & judgeList[2, i])
            {
                Console.WriteLine(IOLibrary.YesOrNo(true));
                return;
            }
        }

        //ななめ
        if (judgeList[0, 0] & judgeList[1, 1] & judgeList[2, 2] ||
            judgeList[0, 2] & judgeList[1, 1] & judgeList[2, 0])
        {
            Console.WriteLine(IOLibrary.YesOrNo(true));
            return;
        }

        Console.WriteLine(IOLibrary.YesOrNo(false));
    }
Esempio n. 6
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);
        }
    }
Esempio n. 7
0
    public static void GotoJail()
    {
        var N     = IOLibrary.ReadInt();
        var DList = IOLibrary.ReadInt2DArray(N);

        for (var i = 0; i < N - 2; i++)
        {
            var D0 = DList[i];
            var D1 = DList[i + 1];
            var D2 = DList[i + 2];
            if (D0[0] == D0[1] &&
                D1[0] == D1[1] &&
                D2[0] == D2[1])
            {
                Console.WriteLine(IOLibrary.YesOrNo(true));
                return;
            }
        }

        Console.WriteLine(IOLibrary.YesOrNo(false));
    }
Esempio n. 8
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);
    }
Esempio n. 9
0
    public static void SmartphoneAddiction()
    {
        var(N, M, T) = IOLibrary.ReadInt3();

        var AB = IOLibrary.ReadInt2DArray(M);

        var battery = N;
        var time    = 0;

        for (var i = 0; i < M; i++)
        {
            //消費
            var consumption = AB[i][0] - time;
            battery -= consumption;

            if (battery <= 0)
            {
                Console.WriteLine(IOLibrary.YesOrNo(false));
                return;
            }

            //充電
            var charging = AB[i][1] - AB[i][0];
            battery += charging;
            battery  = Math.Min(battery, N);
            time     = AB[i][1];
        }

        //最後のカフェから家
        {
            var consumption = T - AB[M - 1][1];
            battery -= consumption;
        }

        Console.WriteLine(IOLibrary.YesOrNo(battery > 0));
    }
Esempio n. 10
0
    /// <summary>
    /// 5
    /// </summary>
    public static void CanYouSolveThis()
    {
        var(N, M, C) = IOLibrary.ReadInt3();
        var B = IOLibrary.ReadIntArray();
        var A = IOLibrary.ReadInt2DArray(N);

        var count = 0;

        for (var i = 0; i < N; i++)
        {
            var sum = C;
            for (var j = 0; j < M; j++)
            {
                sum += A[i][j] * B[j];
            }

            if (sum > 0)
            {
                count++;
            }
        }

        Console.WriteLine(count);
    }