Pagini recente » Cod sursa (job #2393599) | Cod sursa (job #1588322) | Cod sursa (job #1074757) | Cod sursa (job #1096941) | Cod sursa (job #1971909)
#include <stdint.h>
#include <fstream>
#include <string.h>
#include <stdio.h>
#include <math.h>
#define nmax 1025
#define mod 9973
using namespace std;
fstream f1("oite.in", ios::in);
fstream f2("oite.out", ios::out);
int16_t n;
int32_t suma, a[nmax];
int64_t nrsol;
struct nod
{
int32_t val;
nod *urm;
} *t[mod];
void citire()
{
int16_t i;
f1>>n>>suma;
for(i=1; i<=n; i++)
f1>>a[i];
}
void insereaza(int32_t sum)
{
nod *p=new nod;
p->val=sum;
p->urm=t[sum%mod];
t[sum%mod]=p;
}
void cauta(int32_t sum)
{
nod*p;
for(p=t[sum%mod]; p!=0; p=p->urm)
if(p->val==sum) nrsol++;
}
void solutie()
{
int16_t i, j, k;
for(i=2; i<n; i++)
{
for(j=i+1; j<=n; j++)
{
///cauti valoarea suma-(a[i]+a[j]) in hash
if(suma-(a[i]+a[j])>0) cauta(suma-(a[i]+a[j]));///numeri nr aparoitii valoare in hash
}
for(k=1; k<i; k++)
{
///bagi in hash a[i]+a[k]
insereaza(a[i]+a[k]);
}
}
}
int main()
{
citire();
solutie();
f2<<nrsol;
return 0;
}