Pagini recente » Cod sursa (job #2707824) | Cod sursa (job #1836396) | Cod sursa (job #2287119) | Cod sursa (job #2352821) | Cod sursa (job #1971920)
#include <stdint.h>
#include <fstream>
#include <string.h>
#include <stdio.h>
#include <math.h>
#define nmax 1025
#define mod 7919
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 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)
{
nod*p;
for(p=t[(suma-(a[i]+a[j]))%mod]; p!=0; p=p->urm)
if(p->val==(suma-(a[i]+a[j]))) nrsol++;
}
}
for(k=1; k<i; k++)
{
///bagi in hash a[i]+a[k]
nod *p=new nod;
p->val=a[i]+a[k];
p->urm=t[(a[i]+a[k])%mod];
t[(a[i]+a[k])%mod]=p;
}
}
}
int main()
{
citire();
solutie();
f2<<nrsol;
return 0;
}