Pagini recente » Cod sursa (job #103716) | Cod sursa (job #362698) | Cod sursa (job #2544110) | Cod sursa (job #231392) | Cod sursa (job #1345358)
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
#define mod 73933
#define maxN 1111
#define mPair pair<long,long>
#define sum first
#define pos second
long n,i,j,l,p;
long a[maxN];
vector<mPair > Hash[mod];
long long ans;
inline long getId(long x){return (x)%mod;}
void addPair(long i,long j){
long id = getId(a[i]+a[j]);
Hash[id].push_back(make_pair(a[i]+a[j],i));
}
int main()
{
freopen("oite.in","r",stdin);
freopen("oite.out","w",stdout);
scanf("%ld %ld",&n,&l);
for(i=1;i<=n;i++) scanf("%ld",&a[i]);
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
addPair(i,j);
for(i=1;i<n;i++){
for(j=i+1;j<=n;j++){
long target = l-a[i]-a[j];
long id = getId(target);
for(p=0;p<Hash[id].size();p++){
mPair newP = Hash[id][p];
if(newP.sum!=target) continue;
if(newP.pos<=j) continue;
ans++;
}
}
}
printf("%lld",ans);
return 0;
}