Pagini recente » Cod sursa (job #1333754) | Cod sursa (job #2278438) | Cod sursa (job #202404) | Cod sursa (job #1263804) | Cod sursa (job #93921)
Cod sursa(job #93921)
using namespace std;
#include <cstdio>
#include <algorithm>
#define maxn 128123
#define maxlog 17
int a[1024], n, S;
struct nod { short i, j; int nr;nod(){}; nod(short a, short b,int c){i=a; j=b;nr=c;};};
nod H[maxn][maxlog];
inline int insert(short i, short j)
{
int s=a[i]+a[j];
int h1=s%maxn;
int h2=s%maxlog;
if(H[h1][h2].nr==0)
H[h1][h2]=nod(i, j,1);
else ++H[h1][h2].nr;
}
unsigned int nr=0;
inline void find(short i, short j)
{
int s=S-a[i]-a[j];
if(s<0) return;
int h1=s%maxn;
int h2=s%maxlog;
short k, t;
k=H[h1][h2].i, t=H[h1][h2].j;
if(k==0 && t==0) return;
if(k==i || k==j || t==i || t==j) return;
nr+=H[h1][h2].nr;
}
int main()
{
freopen("oite.in","r",stdin);
scanf("%d %d\n", &n, &S);
int i, j;
for(i=1;i<=n;++i) scanf("%d ", a+i);
for(i=1;i<n;++i)
for(j=i+1;j<=n;++j)
insert(i, j);
for(i=1;i<n;++i)
for(j=i+1;j<=n;++j)
find(i, j);
freopen("oite.out","w",stdout);
printf("%d\n", nr/6);
return 0;
}