Pagini recente » Cod sursa (job #1940668) | Cod sursa (job #1637632) | Cod sursa (job #1742246) | Cod sursa (job #1826844) | Cod sursa (job #1773657)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
const int maxn=1<<20,prim=41;
ifstream si("oite.in");
ofstream so("oite.out");
int v[1030],h[maxn],vaz[maxn];
int k;
int inc(int i)
{
if(++i==maxn)
i=0;
return i;
}
void hashi(int x)
{
int i;
for(i=x%maxn;h[i]!=-1&&h[i]!=x;i=inc(i));
h[i]=x;
vaz[i]++;
}
int hashf(int x)
{
int i;
for(i=x%maxn;h[i]!=-1&&h[i]!=x;i=inc(i));
if(h[i]==x)
return i;
else
return -1;
}
int main()
{
int n,i,j,l,sol=0;
si>>n>>l;
memset(h,-1,sizeof h);
for(i=1;i<=n;i++)
si>>v[i];
for(i=3;i<n;i++)
{
for(j=1;j<i-1;j++)
hashi(v[j]+v[i-1]);
for(j=i+1;j<=n;j++)
if(l-v[i]-v[j]>=0)
{
k=hashf(l-v[i]-v[j]);
if(k>-1)
sol+=vaz[k];
}
}
so<<sol;
return 0;
}