我以为不重复矩形是边长不一样,结果我这样写下去直接超鬼了。
include<iostream>
include<map>
define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=30;
int t[maxn];
struct node{
int x,y;
}p[maxn];
map<int,int>mp;
int main()
{
int n,cnt=0,num=0;
double sum=0;
cin>>n;
rep(i,1,n){
cin>>t[i];
sum+=t[i];
t[i]+=t[i-1];
}
sum/=2;
rep(i,1,n)
rep(j,i+1,n){
if(t[j]-t[i]==sum){
p[++cnt].x=i,p[cnt].y=j;
break;
}
if(t[j]-t[i]>sum)break;
}
rep(i,1,cnt-1)
rep(j,i+1,cnt){
if(mp.find(t[p[j].x]-t[p[i].x])==mp.end())
if(mp.find(t[p[j].y]-t[p[i].y])==mp.end())
{
mp[t[p[j].x]-t[p[i].x]]=1;
mp[t[p[j].y]-t[p[i].y]]=1;
num++;
}
}
cout<<num<<endl;
}```