Pagini recente » Cod sursa (job #2437865) | Cod sursa (job #168586) | Cod sursa (job #295530) | Cod sursa (job #2884359) | Cod sursa (job #462520)
Cod sursa(job #462520)
#include<stdio.h>
#include<vector>
using namespace std;
#define ll long long
#define MOD 666013
#define x first
#define y second
#define PII pair<int, int>
vector<PII > h[666021];
int n,s,v[1050];
ll sol;
PII *find(int val)
{
if (val < 0)
return 0;
int i,key=val%MOD;
int nr=h[key].size();
for(i=0;i<nr;i++)
if(h[key][i].x==val)
return &h[key][i];
return 0;
}
void update(int val)
{
if (val < 0)
return ;
PII *a = find(val);
if (a != NULL)
a->y++;
else
h[val%MOD].push_back( make_pair(val, 1) );
}
int main ()
{
int i,j;
PII *a;
freopen("oite.in","r",stdin);
freopen("oite.out","w",stdout);
scanf("%d%d",&n,&s);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
for(i=1;i<=n;i++)
{
for(j=i+1;j<=n;j++)
{
a = find(s-v[i]-v[j]);
if (a)
sol += a->y;
}
for(j=1;j<i;j++)
update(v[i]+v[j]);
}
printf("%lld\n",sol);
return 0;
}