4.拯救美猴王【算法赛】 - 蓝桥云课 (lanqiao.cn)
#include<bits/stdc++.h>
using namespace std;
int n;
const int N=2e5+10;
int a[N];
int main()
{
cin>>n;
for(int i=0;i<n;i++)cin>>a[i];
map<int,int>cnt;
vector<int> Left(n+1),Right(n+1);
for(int i=1;i<=n;i++)
{
Left[i]=cnt[a[i]];
for(int j=1;j<i;j++)
{
cnt[a[i]+a[j]]++;
}
}
cnt.clear();
for(int i=n;i>=1;i--)
{
Right[i]=cnt[a[i]];
for(int j=i+1;j<=n;j++)
{
cnt[a[i]+a[j]]++;
}
}
int ans=0;
for(int i=1;i<=n;i++)
{
ans+=Left[i]*Right[i];
}
cout<<ans<<endl;
return 0;
}