はまやんはまやんはまやん

hamayanhamayan's blog

TakoyakiPicking [Summer Festival Contest 1]

コンテスト: 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;
}