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); }
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)); }
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]); }
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); }
public static void ThreePointShot() { var(X, Y) = IOLibrary.ReadInt2(); var sub = Math.Abs(X - Y); Console.WriteLine(IOLibrary.YesOrNo(sub < 3)); }
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); }
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); }
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); }
public static void MixJuice() { var(N, K) = IOLibrary.ReadInt2(); var p = IOLibrary.ReadIntArray(); var total = p.Sort().Take(K).Sum(); Console.WriteLine(total); }
public static void Product() { var(a, b) = IOLibrary.ReadInt2(); var c = a * b; var ans = (c % 2 == 0) ? $"Even" : $"Odd"; Console.WriteLine(ans); }
public static void Determinant() { var(a, b) = IOLibrary.ReadInt2(); var(c, d) = IOLibrary.ReadInt2(); var determinant = a * d - b * c; Console.WriteLine(determinant); }
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); } }
/// <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); }
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); }
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); }
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"); }
/// <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); }
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); }
public static void LargeDigits() { var(A, B) = IOLibrary.ReadInt2(); Console.WriteLine(Math.Max(MathLibrary.SumOfDigits(A), MathLibrary.SumOfDigits(B))); }
public static void Brick() { var(N, W) = IOLibrary.ReadInt2(); Console.WriteLine(N / W); }