コンテスト: https://hoj.hamako-ths.ed.jp/onlinejudge/contest/106/problems/1
アーカイブ: https://hoj.hamako-ths.ed.jp/onlinejudge/problems/834
解説書いていいか分からないけど、ダメだったら消します。
前提知識
- 累積和
解法
https://hoj.hamako-ths.ed.jp/onlinejudge/state/25955
前半と後半の区切りを全探索する。
前半(le)と後半(ri)の総和は累積和を用いることで高速に取得できる。
long longじゃないとオーバーフローするので注意。
typedef long long ll; int N; ll A[101010]; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N; rep(i, 0, N) cin >> A[i]; rep(i, 1, N) A[i] += A[i - 1]; string ans = "NO"; rep(x, 0, N) { ll le = A[x]; ll ri = A[N - 1] - A[x]; if (le == ri) ans = "YES"; } cout << ans << endl; }