#nullable enable #region var _input = Array.Empty(); var _iter = 0; string String() { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Split(' '), 0); return _input[_iter++]; } T I() where T : IParsable => T.Parse(String(), null); #endregion T[] Range(int n, Func F) => Enumerable.Range(0, n).Select(_ => F()).ToArray(); var n = I(); var az = Range(n, I); var ans = 0L; var bag = new Bag<(long, int)>(); for (var i = 1; i <= n; i++) { var a = az[i - 1]; var d = 0L; for (var k = 1; k <= n; k++) { d += i; if (d > 200000) break; var v = d - a; if (bag[(v, k)] > 0) { ans += bag[(v, k)]; } bag.Add((-v, k)); } } Console.WriteLine(ans); class Bag where K : notnull { readonly Dictionary _dictionary = new(); public void Add(K key) { var dictionary = _dictionary; if (dictionary.TryGetValue(key, out var count)) dictionary[key] = count + 1; else dictionary[key] = 1; } public bool Remove(K key) { var dictionary = _dictionary; if (!dictionary.TryGetValue(key, out var count)) return false; if (count == 1) dictionary.Remove(key); else dictionary[key] = count - 1; return true; } public int this[K key] => _dictionary.TryGetValue(key, out var count) ? count : 0; public int CountKeys => _dictionary.Count; }