Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <cstdio>#include <map>#define ll long longusing namespace std;ll a[100005], sum[100005];int main() {int n;scanf("%d", &n);map<ll, ll> sum_cnt;for (int i = 1; i <= n; ++i)scanf("%lld", &a[i]), sum[i] = sum[i - 1] + a[i];if (sum[n] < 0)for (int i = 1; i <= n; ++i)a[i] = -a[i], sum[i] = -sum[i], sum_cnt[sum[i]]++;elsefor (int i = 1; i <= n; ++i) sum_cnt[sum[i]]++;ll temp = sum[n] / 3;if (sum[n] % 3 == 0) {ll sum1 = 0, ans = 0;sum_cnt[sum[n]]--;for (int i = n; i > 2; --i) {sum1 += a[i];sum_cnt[sum[i - 1]]--;if (sum1 == temp) {ans += sum_cnt[temp];}}printf("%lld\n", ans);} else if (sum[n] % 3 == 1) {ll sum1 = 0, ans = 0;sum_cnt[sum[n]]--;