public string SolveOneCase(InputParser input) { int N = input.GetInt(); double V = double.Parse(input.GetString()); double X = double.Parse(input.GetString()); double R0 = double.Parse(input.GetString()); double C0 = double.Parse(input.GetString()); if (N == 1) { if (C0 != X) { return(IMPOSSIBLE); } else { return((V / R0).ToString()); } } double R1 = double.Parse(input.GetString()); double C1 = double.Parse(input.GetString()); if (C0 < X && C1 < X) { return(IMPOSSIBLE); } if (C0 > X && C1 > X) { return(IMPOSSIBLE); } if (X == C0 || X == C1) { double r = 0; if (X == C0) { r += R0; } if (X == C1) { r += R1; } return((V / r).ToString()); } var v0 = V * (X - C1) / (C0 - C1); var v1 = V - v0; var t0 = v0 / R0; var t1 = v1 / R1; var res = Math.Max(t0, t1); return(res.ToString()); }
public string SolveOneCase(InputParser input) { int N = input.GetInt(); E = new List <List <int> >(); for (int i = 0; i < N + 1; i++) { E.Add(new List <int>()); } for (int i = 0; i < N - 1; i++) { var a = input.GetInt(); var b = input.GetInt(); E[a].Add(b); E[b].Add(a); } int best = int.MaxValue; int node = -1; deletes = new List <Dictionary <int, int> >(); trees = new List <Dictionary <int, int> >(); for (int i = 0; i < N + 1; i++) { deletes.Add(new Dictionary <int, int>()); trees.Add(new Dictionary <int, int>()); } for (int i = 1; i <= N; i++) { int b = tree(-1, i); if (b < best) { best = b; node = i; } } //Console.WriteLine(node); return(best.ToString()); }
public string SolveOneCase(InputParser input) { int N = input.GetInt(); int L = input.GetInt(); var outlets = input.GetStringArray(); List <int> outs = new List <int>(); var devices = input.GetStringArray(); List <int> devs = new List <int>(); for (int i = 0; i < N; i++) { outs.Add(Convert.ToInt32(outlets[i], 2)); devs.Add(Convert.ToInt32(devices[i], 2)); } int max = 2 << L + 1; int best = int.MaxValue; for (int i = 0; i <= max; i++) { int i1 = i; var copy = outs.Select(x => x ^ i1).ToList(); var ex = copy.Except(devs); if (ex.Count() == 0) { var b = count_bits(i); if (b < best) { best = b; } } } if (best == int.MaxValue) { return("NOT POSSIBLE"); } return(best.ToString()); }
public static void Solve(IProblem problem, TextReader input, TextWriter output) { var parser = new InputParser(input); int T = parser.GetInt(); for (int i = 0; i < T; i++) { output.WriteLine(string.Format("Case #{0}: {1}", i + 1, problem.SolveOneCase(parser))); } }
public string SolveOneCase(InputParser input) { N = input.GetInt(); count = 0; var cars = input.GetStringArray(); Permute(new bool[N], new List <int>(), cars); return(count.ToString()); }
public string SolveOneCase(InputParser input) { checked { int N = input.GetInt(); long P = input.GetLong(); long y = 0; int x = 0; long pa = P; while (pa > 1) { x++; pa = pa / 2; } long z = (1L << N) - (1L << (N - x)); if (x == N) { y = P - 1; } else { long v = 1L << (N - 1); long c = 2; long t = v; while (P > t) { y += c; v = v >> 1; t += v; c = c << 1; } } return(y + " " + z); } }
public string SolveOneCase(InputParser input) { var word = input.GetString(); int n = input.GetInt(); int count = 0; for (int i = 0; i < word.Length; i++) { for (int j = i + n - 1; j < word.Length; j++) { int c = 0; var sub = word.Substring(i, j - i + 1); for (int k = 0; k < sub.Length; k++) { if (IsConst(sub[k])) { c++; } else { c = 0; } if (c == n) { //Console.WriteLine(sub); count++; break; } } } } return(count.ToString()); }
public string SolveOneCase(InputParser input) { int N = input.GetInt(); int[] d = new int[N]; int[] n = new int[N]; int[] w = new int[N]; int[] e = new int[N]; int[] S = new int[N]; int[] d_d = new int[N]; int[] d_p = new int[N]; int[] d_s = new int[N]; int[] a = new int[N]; for (int i = 0; i < N; i++) { d[i] = input.GetInt(); n[i] = input.GetInt(); w[i] = input.GetInt(); e[i] = input.GetInt(); S[i] = input.GetInt(); d_d[i] = input.GetInt(); d_p[i] = input.GetInt(); d_s[i] = input.GetInt(); } var pq = new PriorityQueue <int>(); for (int i = 0; i < N; i++) { pq.Enqueue(i, d[i]); } int[] wall = new int[20000]; int ADJ = +10000; int count = 0; while (!pq.IsEmpty) { int dd = pq.GetNextPriority(); var list = new List <int>(); while (!pq.IsEmpty && pq.GetNextPriority() == dd) { list.Add(pq.Dequeue()); } for (int its = 0; its < 2; its++) { for (int t = 0; t < list.Count; t++) { int i = list[t]; int ww = a[i] * d_p[i] + w[i]; int ee = a[i] * d_p[i] + e[i]; int ss = a[i] * d_s[i] + S[i]; for (int j = ww; j < ee; j++) { if (its == 0) { if (ss > wall[j + ADJ]) { count++; break; } } if (its == 1) { wall[j + ADJ] = Math.Max(wall[j + ADJ], ss); } } if (its == 1) { a[i]++; if (a[i] < n[i]) { pq.Enqueue(i, dd + d_d[i]); } } } } } return(count.ToString()); }
public string SolveOneCase(InputParser input) { int C = input.GetInt(); int D = input.GetInt(); int V = input.GetInt(); var Ds = input.GetIntArray(); var hs = new HashSet <int>(); hs.Add(0); for (int i = 0; i < D; i++) { var list = hs.ToList(); var dd = Ds[i]; for (int j = 0; j < list.Count; j++) { int item = list[j] + dd; if (item > V) { continue; } hs.Add(item); } } int count = 0; while (true) { var miss = new List <int>(); for (int i = 0; i <= V; i++) { if (!hs.Contains(i)) { miss.Add(i); } } if (miss.Count == 0) { break; } miss.Sort(); var list = hs.ToList(); var dd = miss[0]; for (int j = 0; j < list.Count; j++) { int item = list[j] + dd; if (item > V) { continue; } hs.Add(item); } count++; } return(count.ToString()); }
public string SolveOneCase(InputParser input) { int K = input.GetInt(); int L = input.GetInt(); int S = input.GetInt(); string alph = input.GetString(); string word = input.GetString(); // not in alphabet for (int i = 0; i < L; i++) { var c = word[i]; if (!alph.Contains(c.ToString())) { return("0.0"); } } // all same bool same = true; var a = word[0]; for (int i = 0; i < L; i++) { if (word[i] != a) { same = false; } } for (int i = 0; i < K; i++) { if (alph[i] != a) { same = false; } } if (same) { return("0.0"); } int overlap = 0; for (int i = 1; i < L; i++) { var st = word.Substring(0, i); var e = word.Substring(word.Length - i, i); if (st == e) { overlap = i; } } int count = 0; int ii = 0; while (true) { if (ii + L <= S) { count++; ii = ii + L - overlap; continue; } break; } double p = 1; for (int i = 0; i < L; i++) { var aa = word[i]; double cc = alph.Count(x => x == aa); p *= cc / K; } var res = count - p * (S - L + 1); return(res.ToString()); }
public string SolveOneCase(InputParser input) { int X = input.GetInt(); int Y = input.GetInt(); int sum = Math.Abs(X) + Math.Abs(Y); int n = 1; int nsum = 0; while (true) { nsum += n; if (nsum % 2 == sum % 2) { if (nsum >= sum) { break; } } n++; } StringBuilder sb = new StringBuilder(); for (int i = n; i > 0; i--) { if (Math.Abs(X) >= Math.Abs(Y)) { if (X < 0) { sb.Append('W'); X += i; } else { sb.Append('E'); X -= i; } } else { if (Y < 0) { sb.Append('S'); Y += i; } else { sb.Append('N'); Y -= i; } } //Console.WriteLine((String.Format("X={0} Y={1}", X, Y))); } if (X != 0 && Y != 0) { throw new Exception(String.Format("X={0} Y={1}", X, Y)); } var s = sb.ToString(); var car = s.ToCharArray(); Array.Reverse(car); return(new string(car)); }