Pagini recente » Cod sursa (job #1430838) | Cod sursa (job #772921) | Cod sursa (job #3227447) | Cod sursa (job #2933275) | Cod sursa (job #1761408)
#include <stdio.h>
#define MOD 10011
using namespace std;
int h[1025], next[1025], f[1025], liste[MOD], v[1025];
inline int search(int x){
int j;
for(j=liste[x%MOD];j!=0 && h[j]!=x;j=next[j]);
return j;
}
int main()
{
int l, c, a, i, j, x, poz;
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;
S=0;
for(i=1;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++){
x=v[i]+v[j];
poz=search(x);
if(h[poz]==x)
f[poz]++;
else{
h[a]=x;
next[a]=liste[x%MOD];
liste[x%MOD]=a;
f[a]=1;
a++;
}
}
}
fprintf(fo, "%lld", S);
fclose(fi);
fclose(fo);
return 0;
}