Pagini recente » Cod sursa (job #2008441) | Cod sursa (job #2815344) | Cod sursa (job #2193090) | Cod sursa (job #339640) | Cod sursa (job #1761336)
#include <stdio.h>
#define MOD 789231
using namespace std;
int h[1025], next[1025], f[1025], liste[MOD], v[1025], a;
inline int search(int x){
int j;
for(j=liste[x%MOD];j!=0;j=next[j])
if(h[j]==x)
return j;
return 0;
}
inline void add(int x){
int poz=search(x);
if(h[poz]==x)
f[poz]++;
else{
h[a]=x;
f[a]=1;
next[poz]=liste[x%MOD];
liste[x%MOD]=a;
a++;
}
}
int main()
{
int l, c, i, j;
long long S;
FILE *fi=fopen("oite.in", "r"), *fo=fopen("oite.out", "w");
fscanf(fi, "%d%d", &c, &l);
for(i=0;i<c;i++)
fscanf(fi, "%d", &v[i]);
a=1;
add(v[0]+v[1]);
S=0;
for(i=2;i<c-1;i++){
for(j=i+1;j<c;j++)
if(l-v[i]-v[j]>=0)
S+=f[search(l-v[i]-v[j])];
for(j=0;j<i;j++){
add(v[i]+v[j]);
}
}
fprintf(fo, "%lld", S);
fclose(fi);
fclose(fo);
return 0;
}