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 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 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); }
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); }
/// <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)); }
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); } }
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)); }
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 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)); }
/// <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); }