Pagini recente » Cod sursa (job #110488) | Cod sursa (job #1553436) | Cod sursa (job #3243295) | Cod sursa (job #3147368) | Cod sursa (job #1503139)
#include<fstream>
using namespace std;
ifstream fin("oite.in");
ofstream fout("oite.out");
typedef struct celula
{
int v,nr;
celula *next;
}*lista;
lista hash[666013];
int n,s,i,j,a[1050],sol,mm=666013;
void baga(int v)
{
bool ok=1;
lista p;
int poz=v%mm;
for (p=hash[poz]; p; p=p->next)
if (p->v==v)
{
++p->nr;
ok=0;
break;
}
if (ok)
{
p=new celula;
p->v=v;
p->nr=1;
p->next=hash[poz];
hash[poz]=p;
}
}
int cauta(int v)
{
int rez=0,poz=v%mm;
for (lista p=hash[poz]; p; p=p->next)
if (p->v==v)
{
rez=p->nr;
break;
}
return(rez);
}
int main()
{
fin>>n>>s;
for (i=1; i<=n; ++i) fin>>a[i];
for (i=1; i<n; ++i)
{
for (j=i+1; j<=n; ++j)
if (s-a[i]-a[j]>0) sol+=cauta(s-a[i]-a[j]);
for (j=1; j<i; ++j) baga(a[i]+a[j]);
}
fout<<sol;
return(0);
}