Pagini recente » Monitorul de evaluare | Cod sursa (job #467716) | Cod sursa (job #1014906) | Cod sursa (job #2862352) | Cod sursa (job #1345341)
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
#define mod 173933
#define maxN 1111
#define mPair pair<long,long>
#define v1 first
#define v2 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(i,j));
}
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.v1<=j) continue;
ans++;
}
}
}
printf("%lld",ans);
return 0;
}