Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <unordered_map>#include <cstring>using namespace std;const int MAXN = 1e5 + 10;int N;unordered_map<long long, int> cnt;long long arr[MAXN], ans;int main() {cin >> N;for (int i = 1; i <= N; ++i) {cin >> arr[i];arr[i] += arr[i-1];}if (N < 3) cout << 0 << endl;else {for (int q = 3; q <= N; ++q) {++cnt[arr[q - 2]];long long third = arr[N] - arr[q - 1];for (long long first = third - 1; first <= third + 1; ++first) {if (cnt.count(first)) {long long second = arr[N] - third - first;if (abs(first - second) <= 1 && abs(third - second) <= 1) {ans += cnt[first];}}}}