voidsolve(int x){ int d = x * x - a[1], L = std::max<int>(d, 0), R = 1e18; for (int i = x, p = 0; p < n; ++i) { int np = getpre(i * i + i - d); if (np != p) R = std::min(R, i * i + i - a[np]); p = np;
np = getpre((i + 1) * (i + 1) - d - 1); if (np != p) L = std::max(L, (i + 1) * (i + 1) - a[p + 1]); p = np; } if (L <= R) ans = std::min(ans, L); }
voiddickdreamer(){ std::cin >> n; for (int i = 1; i <= n; ++i) { std::cin >> a[i]; pre[a[i]] = i; } for (int i = 1; i <= a[n]; ++i) { if (!pre[i]) pre[i] = pre[i - 1]; } ans = a[n] * a[n] - a[1]; for (int i = 1; i < a[n]; ++i) solve(i); std::cout << ans << '\n'; }