- https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=3117
- 誰も解説を書いていなかったので、方針だけ
- 入力Aの累積和をBとする
- (i, jが右辺と左辺に分離できた)
- 条件を満たすi,jの組を数えるには、座標圧縮してBITを使うなどすればいい
int main(){ cin.tie(0); ios::sync_with_stdio(false); // input ll N; cin>>N; VI A(N); rep(i, N){ cin >> A[i]; } map<ll,ll> left,right; VI Ans; rep(i,N){ { ll a = A[i]; left[a]++; } { ll a = A[N-1-i]; right[a]++; } if(left==right){ Ans.push_back(i+1); } } print_vector(Ans); return 0; }