https://atcoder.jp/contests/ddcc2020-qual/tasks/ddcc2020_qual_b
解説
https://atcoder.jp/contests/ddcc2020-qual/submissions/8587116
どの切れ目を選ぶかを全探索する。
ある位置で切ったとして、片方の長さがlft, もう片方の長さがrhtであるとき、
操作を行う回数の最小値はabs(lft - rht)となる。
これを全体の総和totと今までの累積和lftを持っておくと、rht=tot-lftとなる。
回数の最小値の最小値を取ると答え。
int N; ll A[201010]; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N; rep(i, 0, N) cin >> A[i]; ll tot = 0; rep(i, 0, N) tot += A[i]; ll ans = infl; ll lft = 0; rep(i, 0, N) { chmin(ans, abs(tot - lft - lft)); lft += A[i]; } cout << ans << endl; }