1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<bits/stdc++.h>

using namespace std;

const int N = 500 + 5, S = 2e7 + 5;
int n = 0, a[N] = {}, p[N] = {}, c[S << 1] = {};
long long ans = 0;

int main(){
	scanf("%d", &n);
	for(int i = 1 ; i <= n ; i ++){
		scanf("%d", &a[i]);
		p[i] = p[i - 1] + a[i];
	}
	for(int i = 1 ; i <= n ; i ++){
		for(int l = 1 ; l <= n ; l ++) for(int r = l ; r <= n ; r ++) c[S + (p[r] - p[l - 1] - p[i - 1])] ++;
		for(int l = 1 ; l <= n ; l ++) for(int r = l ; r <= n ; r ++) ans += c[S - (p[r] - p[l - 1] + p[i])];
	}
	memset(c, 0, sizeof(c));
	for(int l = 1 ; l <= n ; l ++) for(int r = l ; r <= n ; r ++) c[S + 2 * (p[r] - p[l - 1])] ++;
	for(int l = 1 ; l <= n ; l ++) for(int r = l ; r <= n ; r ++) ans -= 3 * c[S - (p[r] - p[l - 1])];
	for(int l = 1 ; l <= n ; l ++) for(int r = l ; r <= n ; r ++) if(p[r] - p[l - 1] == 0) ans += 2;
	printf("%lld\n", ans / 6);
	return 0;
}