Codeforces 429(#245 Div1) D. Tricky Function

問題

a[i]が与えられる。
(i - j)^2 + (Σ[k=j,i]a[k]) ^ 2の最小値を求めよ。

制約条件

a[i]の要素≦10^5
|a[i]|≦10^4

方針

n個の点で、i番目の点の座標が(i, Σa[i])であるようなものを考えると、
与えられた問題は、最近点対の距離を求める問題。


最近点対を使ってもよいし、この問題の場合なんか適当に2秒間一杯ループをまわしても通ってしまう。

ソースコード

int n;
ll s[100000];

int main(){
	double start = getnow();
	
	int cnt = 0;
	ll ans = 1e18;
	
	rep(w, n - 1) rep(i, n - w - 1){
		ans = min(ans, (w + 1ll) * (w + 1ll) + (s[i + w + 1] - s[i]) * (s[i + w + 1] - s[i]));
		
		if(++cnt % 131072 == 0 && getnow() - start > 1.9){
			w = n;
			break;
		}
	}
	cout << ans << endl;
	
	return 0;
}