Pagini recente » Cod sursa (job #2706377) | Cod sursa (job #563245) | Cod sursa (job #551686) | Cod sursa (job #2657042) | Cod sursa (job #64415)
Cod sursa(job #64415)
#include <cstdio>
#include <algorithm>
#define MOD 312457
using namespace std;
struct rec {
unsigned p, val, nr;
};
int n, sol;
unsigned s, a[1200], aloc = MOD;
rec h[MOD+(1<<20)];
void baga(unsigned x)
{
unsigned key = x%MOD;
while (h[key].p){
if (h[key].val == x){
h[key].nr++;
return;
}
key=h[key].p;
}
h[key].p = aloc++;
h[key].val = x;
h[key].nr = 1;
}
unsigned count(unsigned x)
{
unsigned key = x%MOD;
while (h[key].p){
if (h[key].val==x) return h[key].nr;
key=h[key].p;
}
return 0;
}
int main()
{
freopen("oite.in", "r", stdin);
freopen("oite.out", "w", stdout);
scanf("%d %u", &n, &s);
int i,k;
for (i=0; i<n; i++)
scanf("%u", a+i);
sort(a, a+n);
for (k=2; k<n-1; k++){
for (i=0; i<k-1; i++)
baga(a[k-1]+a[i]);
for (i=k+1; i<n; i++)
sol += count(s-a[k]-a[i]);
}
printf("%d\n", sol);
return 0;
}