public void Solve(TextReader input, TextWriter output) { var scanner = new StreamTokenizer(input); int testNum = scanner.NextInt(); Random rnd = new Random(); foreach (int caseId in Enumerable.Range(1, testNum)) { int n = scanner.NextInt(); double d = scanner.NextDouble(); double[] p = new double[n]; int[] v = new int[n]; for (int i = 0; i < n; i++) { p[i] = scanner.NextDouble(); v[i] = scanner.NextInt(); } double left = 0, right = 1E12; while (right - left > 1E-8) { double mid = (left + right) / 2; bool success = true; double bound = -1E10; for (int i = 0; i < n; i++) { if (v[i] > 0) { bound = Math.Max(p[i] - mid, bound); bound += d * v[i]; if (bound - d > p[i] + mid) { success = false; break; } } } if (success) { right = mid; } else { left = mid; } } output.WriteLine("Case #{0}: {1}", caseId, left); } output.Close(); }
public void Solve(TextReader input, TextWriter output) { var scanner = new StreamTokenizer(input); int testNum = scanner.NextInt(); foreach (int caseId in Enumerable.Range(1, testNum)) { int n = scanner.NextInt(); int k = scanner.NextInt(); int mask = (1 << n) - 1; var answer = (k & mask) == mask; output.WriteLine("Case #{0}: {1}", caseId, answer ? "ON" : "OFF"); } output.Close(); }
public void Solve(TextReader input, TextWriter output) { var scanner = new StreamTokenizer(input); int testNum = scanner.NextInt(); foreach (int caseId in Enumerable.Range(1, testNum)) { int n = scanner.NextInt(); var t = Enumerable.Range(0, n).Select(i => BigInteger.Parse(scanner.Next())).ToArray(); var m = t.Min(); var d = t.Select(v => v - m).Where(v => v > 0).Aggregate(BigInteger.Zero, (s, v) => GCD(v, s)); m %= d; output.WriteLine("Case #{0}: {1}", caseId, m > 0 ? d - m : 0); } output.Close(); }
public void Solve(TextReader input, TextWriter output) { var scanner = new StreamTokenizer(input); int testNum = scanner.NextInt(); Random rnd = new Random(); foreach (int caseId in Enumerable.Range(1, testNum)) { long R = scanner.NextLong(); long k = scanner.NextLong(); int n = scanner.NextInt(); var g = Enumerable.Range(0, n).Select(i => scanner.NextLong()).ToArray(); var d = Enumerable.Repeat(-1, n).ToArray(); var s = Enumerable.Repeat((long)0, n + 1).ToArray(); long answer = 0; for (int i = 0, r = 0; r < R; r++) { if (d[i] > -1) { int l = r - d[i]; answer += (R - r) / l * (s[r] - s[d[i]]); answer += s[(R - r) % l + d[i]] - s[d[i]]; break; } d[i] = r; long c = 0; int j = i; while (c + g[i] <= k) { c += g[i]; i++; if (i == n) { i = 0; } if (i == j) { break; } } answer += c; s[r + 1] = answer; } output.WriteLine("Case #{0}: {1}", caseId, answer); } output.Close(); }
public void Solve(TextReader input, TextWriter output) { var scanner = new StreamTokenizer(input); int testNum = scanner.NextInt(); Random rnd = new Random(); foreach (int caseId in Enumerable.Range(1, testNum)) { int n = scanner.NextInt(); int k = scanner.NextInt(); int b = scanner.NextInt(); int t = scanner.NextInt(); var x = Enumerable.Range(0, n).Select(i => scanner.NextInt()).ToArray(); var v = Enumerable.Range(0, n).Select(i => scanner.NextInt()).ToArray(); int answer = 0; for (int i = n - 1, j = n - 1; i >= 0 && k > 0; i--) { if (x[i] + v[i] * t >= b) { k--; answer += j - i; j--; } } if (k > 0) { output.WriteLine("Case #{0}: {1}", caseId, "IMPOSSIBLE"); } else { output.WriteLine("Case #{0}: {1}", caseId, answer); } } output.Close(); }
public void Solve(TextReader input, TextWriter output) { var scanner = new StreamTokenizer(input); int testNum = scanner.NextInt(); Random rnd = new Random(); foreach (int caseId in Enumerable.Range(1, testNum)) { int n = scanner.NextInt(); var f = new long[n + 1, n + 1]; var c = new long[n + 1, n + 1]; for (int i = 0; i <= n; i++) { c[i, 0] = 1; c[i, i] = 1; for (int j = 1; j < i; j++) { c[i, j] = (c[i - 1, j] + c[i - 1, j - 1]) % Modulus; } } for (int i = 2; i <= n; i++) { f[i, 1] = 1; for (int j = 2; j < i; j++) { f[i, j] = 0; for (int k = 1; k < j; k++) { f[i, j] += (f[j, k] * c[i - j - 1, j - k - 1]) % Modulus; } f[i, j] %= Modulus; } } long answer = 0; for (int j = 1; j < n; j++) { answer += f[n, j]; } answer %= Modulus; output.WriteLine("Case #{0}: {1}", caseId, answer % Modulus); } output.Close(); }
public void Solve(TextReader input, TextWriter output) { var scanner = new StreamTokenizer(input); int testNum = scanner.NextInt(); Random rnd = new Random(); foreach (int caseId in Enumerable.Range(1, testNum)) { int n = scanner.NextInt(); var f = new long[1 << (n + 1), n + 1]; for (int i = 0; i < (1 << n); i++) { int m = scanner.NextInt(); for (int j = 0; j <= n; j++) { f[i, j] = (j < n - m) ? Inf : 0; } } int offset = 1 << n; int offsetOld = 0; for (int i = n - 1; i >= 0; i--) { for (int j = 0; j < (1 << i); j++) { int p = scanner.NextInt(); for (int k = 0; k <= n - 1; k++) { f[offset + j, k] = Math.Min(f[offsetOld + j * 2, k + 1] + f[offsetOld + j * 2 + 1, k + 1] + p, f[offsetOld + j * 2, k] + f[offsetOld + j * 2 + 1, k]); } } offset += 1 << i; offsetOld += 1 << (i + 1); } output.WriteLine("Case #{0}: {1}", caseId, f[offsetOld, 0]); } output.Close(); }
public void Solve(TextReader input, TextWriter output) { var scanner = new StreamTokenizer(input); int testNum = scanner.NextInt(); foreach (int caseId in Enumerable.Range(1, testNum)) { int n = scanner.NextInt(); int m = scanner.NextInt(); var s = new HashSet <string>(); s.Add(""); for (int i = 0; i < n; i++) { AddPath(s, scanner.Next()); } int answer = 0; for (int i = 0; i < m; i++) { answer += AddPath(s, scanner.Next()); } output.WriteLine("Case #{0}: {1}", caseId, answer); } output.Close(); }
public void Solve(TextReader input, TextWriter output) { var scanner = new StreamTokenizer(input); int testNum = scanner.NextInt(); bool[] isPrime = new bool [R + 1]; for (int i = 2; i <= R; i++) { isPrime[i] = true; } for (long i = 0; i <= R; i++) { if (isPrime[i]) { for (long j = i * i; j <= R; j += i) { isPrime[j] = false; } } } foreach (int caseId in Enumerable.Range(1, testNum)) { long n = scanner.NextLong(); if (n == 1) { output.WriteLine("Case #{0}: {1}", caseId, 0); } else { int answer = 1; for (long p = 2; p *p <= n; p++) { if (isPrime[p]) { long s = p * p; while (s <= n) { s *= p; answer++; } } } output.WriteLine("Case #{0}: {1}", caseId, answer); } } output.Close(); }
public void Solve(TextReader input, TextWriter output) { var scanner = new StreamTokenizer(input); int testNum = scanner.NextInt(); foreach (int caseId in Enumerable.Range(1, testNum)) { int x = scanner.NextInt(); int s = scanner.NextInt(); int r = scanner.NextInt(); double t = scanner.NextInt(); int n = scanner.NextInt(); Tuple <int, int>[] a = new Tuple <int, int> [n + 1]; for (int i = 0; i < n; i++) { int b = scanner.NextInt(); int e = scanner.NextInt(); int w = scanner.NextInt(); x -= e - b; a[i] = Tuple.Create(s + w, e - b); } a[n] = Tuple.Create(s, x); int d = r - s; double answer = 0; foreach (var p in a.OrderBy(p => p.Item1)) { double l = p.Item2; double v = p.Item1; double ct = Math.Min(l / (d + v), t); answer += l / v - d / v * ct; t -= ct; } output.WriteLine("Case #{0}: {1:F10}", caseId, answer); } output.Close(); }
public void Solve(TextReader input, TextWriter output) { var scanner = new StreamTokenizer(input); int testNum = scanner.NextInt(); Random rnd = new Random(); foreach (int caseId in Enumerable.Range(1, testNum)) { int n = scanner.NextInt(); var x1 = new int[n]; var y1 = new int[n]; var x2 = new int[n]; var y2 = new int[n]; var parent = Enumerable.Repeat(-1, n).ToArray(); var map = new int[101, 101]; for (int i = 0; i < n; i++) { x1[i] = scanner.NextInt(); y1[i] = scanner.NextInt(); x2[i] = scanner.NextInt(); y2[i] = scanner.NextInt(); for (int x = x1[i]; x <= x2[i]; x++) { for (int y = y1[i]; y <= y2[i]; y++) { map[x, y] = 1; } } } int answer = 0; while (true) { int cnt = 0; for (int x = 100; x > 0; x--) { for (int y = 100; y > 0; y--) { if (map[x, y] == 1) { cnt++; } } } if (cnt == 0) { break; } for (int x = 100; x > 0; x--) { for (int y = 100; y > 0; y--) { if (map[x, y] == 0 && map[x, y - 1] == 1 && map[x - 1, y] == 1) { map[x, y] = 1; } else if (map[x, y] == 1 && map[x, y - 1] == 0 && map[x - 1, y] == 0) { map[x, y] = 0; } } } answer++; } /* * for (int i = 0; i < n; i++) * for (int j = i + 1; j < n; j++) * { * int t = Inter(x1[i], x2[i], x1[j], x2[j]); * int t2 = Inter(y1[i], y2[i], y1[j], y2[j]); * if ((t > 0 && t2 > 0) || (t > 0 && t2 == 0) || (t2 > 0 && t == 0)) || { || Merge(i, j); || } ||} || || || ||for (int j = 1; j < n; j++) || answer += f[n, j]; ||answer %= Modulus; */ output.WriteLine("Case #{0}: {1}", caseId, answer); } output.Close(); }
public void Solve(TextReader input, TextWriter output) { var scanner = new StreamTokenizer(input); int testNum = scanner.NextInt(); foreach (int caseId in Enumerable.Range(1, testNum)) { int r = scanner.NextInt(); int c = scanner.NextInt(); int d = scanner.NextInt(); int[,] w = new int[r + 1, c + 1]; int[,] xw = new int[r + 1, c + 1]; int[,] yw = new int[r + 1, c + 1]; int[,] sw = new int[r + 1, c + 1]; int[,] sx = new int[r + 1, c + 1]; int[,] sy = new int[r + 1, c + 1]; for (int i = 0; i < r; i++) { string s = scanner.Next(); for (int j = 0; j < c; j++) { w[i + 1, j + 1] = s[j] - '0'; sw[i + 1, j + 1] = w[i + 1, j + 1]; xw[i + 1, j + 1] = w[i + 1, j + 1] * (i + 1); yw[i + 1, j + 1] = w[i + 1, j + 1] * (j + 1); sx[i + 1, j + 1] = xw[i + 1, j + 1]; sy[i + 1, j + 1] = yw[i + 1, j + 1]; } } for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { sw[i + 1, j + 1] += sw[i + 1, j] + sw[i, j + 1] - sw[i, j]; sx[i + 1, j + 1] += sx[i + 1, j] + sx[i, j + 1] - sx[i, j]; sy[i + 1, j + 1] += sy[i + 1, j] + sy[i, j + 1] - sy[i, j]; } } int answer = -1; for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { for (int k = 3; k <= Math.Min(r - i, c - j); k++) { int tx = getShape(xw, sx, i + 1, j + 1, i + k, j + k); int ty = getShape(yw, sy, i + 1, j + 1, i + k, j + k); int tw = getShape(w, sw, i + 1, j + 1, i + k, j + k); if (2 * tx == tw * (2 * i + 1 + k) && 2 * ty == tw * (2 * j + 1 + k)) { answer = Math.Max(answer, k); } } } } if (answer == -1) { output.WriteLine("Case #{0}: IMPOSSIBLE", caseId); } else { output.WriteLine("Case #{0}: {1}", caseId, answer); } } output.Close(); }
public void Solve(TextReader input, TextWriter output) { var scanner = new StreamTokenizer(input); int testNum = scanner.NextInt(); foreach (int caseId in Enumerable.Range(1, testNum)) { int n = scanner.NextInt(); string[] match = new string[n]; int[] win = new int[n]; int[] total = new int[n]; double[] wp = new double[n]; double[] owp = new double[n]; double[] oowp = new double[n]; double[] rpi = new double[n]; for (int i = 0; i < n; i++) { match[i] = scanner.Next(); win[i] = match[i].Count(c => c == '1'); total[i] = match[i].Count(c => c != '.'); wp[i] = (double)win[i] / total[i]; } for (int i = 0; i < n; i++) { double sum = 0; for (int j = 0; j < n; j++) { if (match[i][j] != '.') { if (match[j][i] == '1') { sum += (double)(win[j] - 1) / (total[j] - 1); } else { sum += (double)win[j] / (total[j] - 1); } } } owp[i] = sum / total[i]; } for (int i = 0; i < n; i++) { double sum = 0; for (int j = 0; j < n; j++) { if (match[i][j] != '.') { sum += owp[j]; } } oowp[i] = sum / total[i]; } output.WriteLine("Case #{0}:", caseId); for (int i = 0; i < n; i++) { rpi[i] = 0.25 * wp[i] + 0.5 * owp[i] + 0.25 * oowp[i]; output.WriteLine("{0}", rpi[i]); } } output.Close(); }