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
26
27
28
29
30
31
32
33
34
35
#include <bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin>>n;
	vector<int>t(n);
	vector<int>sm(n+1);
	for(int i=0; i<n; i++)
	{
		cin>>t[i];
		sm[i+1]=sm[i]+t[i];
	}
	vector<int>il(60000007);
	long long int wyn=0;
	for(int i=0; i<=n; i++)
	{
		
		for(int j=0; j<=n; j++)
			for(int k=j+1; k<=n; k++)
				wyn+=il[30000000+(sm[k]-sm[j]+sm[i])];
		for(int j=0; j<=n; j++)
			for(int k=j+1; k<=n; k++)
				il[30000000-(sm[k]-sm[j]-sm[i])]++;
	}
	vector<int>st(60000007);
	for(int i=0; i<=n; i++)
		for(int j=i+1; j<=n; j++)
			st[30000000+sm[j]-sm[i]]++;
	for(int i=0; i<=n; i++)
		for(int j=i+1; j<=n; j++)
			wyn-=3*st[30000000-2*(sm[j]-sm[i])];
	wyn+=2*st[30000000];
	cout<<wyn/6<<"\n";
}