static object Solve() { var n = int.Parse(Console.ReadLine()); var a = Read(); var b = Read(); var dp = NewArray2 <long>(n + 1, 3000 + 1); dp[0][0] = 1; for (int i = 1; i <= n; i++) { var av = a[i - 1]; var bv = b[i - 1]; var rsq = new StaticRSQ1(dp[i - 1]); for (int j = av; j <= bv; j++) { dp[i][j] = rsq.GetSum(0, j + 1) % M; } } return(dp[n].Sum() % M); }
static object Solve() { var s = Console.ReadLine().Select(c => (long)(c - '0')).ToArray(); var t = Console.ReadLine().Select(c => (long)(c - '0')).ToArray(); var n = s.Length; var m = t.Length; var rsq = new StaticRSQ1(s); var tSum = t.Sum(); var tr = t.Reverse().ToArray(); var conv = FFT.Convolution(s, tr); return(Enumerable.Range(0, n - m + 1).Min(XorSum)); long XorSum(int j) { var r = tSum; r += rsq.GetSum(j, j + m); r -= 2 * conv[j + m - 1]; return(r); } }
static object Solve() { var n = int.Parse(Console.ReadLine()); var a = ReadL(); var b = ReadL(); var ab = a.Zip(b, (x, y) => x + y).ToArray(); var rsq = new StaticRSQ1(ab); var c = new long[2 * n]; var t = 0L; for (int i = 1; i <= n; i++) { t += rsq.GetSum(0, i); c[i] = t; } for (int i = 1; i < n; i++) { t -= n * ab[i - 1]; t += rsq.GetSum(i, n); c[n + i] = t; } return(string.Join(" ", c)); }
static object Solve() { var(n, k) = Read2(); var a = ReadL(); var rsq = new StaticRSQ1(a); return(string.Join("\n", Enumerable.Range(0, n - k + 1).Select(x => rsq.GetSum(x, x + k)))); }
static object Solve() { var n = int.Parse(Console.ReadLine()); var ps = Array.ConvertAll(new bool[n], _ => Read2()); var ts = Array.ConvertAll(ps, p => (double)p.a / p.b); var rsq = new StaticRSQ1(ts); var t2 = ts.Sum() / 2; var si = First(0, n + 1, x => rsq.GetSum(0, x) >= t2); var dt = rsq.GetSum(0, si) - t2; return(Enumerable.Range(0, si).Sum(i => ps[i].a) - ps[si - 1].b * dt); }
static object Solve() { var n = int.Parse(Console.ReadLine()); var a = ReadL(); var x = long.Parse(Console.ReadLine()); var rsq = new StaticRSQ1(a); return(First(0, 1L << 60, k => { BigInteger q = Math.DivRem(k, n, out var r); return rsq.GetSum(0, n) * q + rsq.GetSum(0, (int)r) > x; })); }
static void Main() { var n = int.Parse(Console.ReadLine()); var ps = Array.ConvertAll(new bool[n], _ => Read2()); var qc = int.Parse(Console.ReadLine()); var qs = Array.ConvertAll(new bool[qc], _ => Read2()); var rsq1 = new StaticRSQ1(Array.ConvertAll(ps, p => p.c == 1 ? p.p : 0L)); var rsq2 = new StaticRSQ1(Array.ConvertAll(ps, p => p.c == 2 ? p.p : 0L)); Console.SetOut(new System.IO.StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false }); foreach (var(l, r) in qs) { Console.WriteLine($"{rsq1.GetSum(l - 1, r)} {rsq2.GetSum(l - 1, r)}"); } Console.Out.Flush(); }
static bool Solve() { var n = int.Parse(Console.ReadLine()); var a = ReadL(); var sum = a.Sum(); if (sum % 10 != 0) { return(false); } sum /= 10; a = a.Concat(a).ToArray(); var rsq = new StaticRSQ1(a); var s = rsq.Raw; var map = new MultiMap <long, int>(); for (int i = 0; i < s.Length; i++) { map.Add(s[i] % sum, i); } foreach (var l in map.Values) { for (int i = 1; i < l.Count; i++) { if (rsq.GetSum(l[i - 1], l[i]) == sum) { return(true); } } } return(false); }