Pagini recente » Cod sursa (job #1618186) | Cod sursa (job #2213750) | Cod sursa (job #2680798) | Cod sursa (job #1325651) | Cod sursa (job #548074)
Cod sursa(job #548074)
#include<stdio.h>
#include<vector>
#define H1 666013
#define Nmax 1034
using namespace std;
struct hash{int s,a,b;}aux;
vector<hash> h1[ H1 ];
int n,m,i,sol,j,k,l,v[ Nmax ];
void citire(){
freopen("oite.in","r",stdin);
scanf("%d %d",&n,&l);
int i;
for(i = 1 ; i <= n; i++)
scanf("%d ",&v[i]);
}
void solve(){
int i,j,s,N1,t,hh1;
/*for(i = 1;i <= n; i++)
for(j = i+1;j<=n;j++)
{s = v[i] + v[j];
aux.s = s;
aux.a = i;
aux.b = j;
h1[ s % H1 ].push_back(aux);
}
for(i = 1 ;i <= n ; i++)
for(j = i+1;j<=n;j++)
{s = l- v[i] - v[j];
if(s < 0 )continue;
hh1 = s % H1;
N1 = h1[ hh1 ].size();
for(t = 0;t < N1 ; t++)
{aux = h1[ hh1 ][ t ];
if(aux.s == s && i != aux.a && i != aux.b && j!= aux.a && j != aux.b)
{sol++;
}
}
}
*/
aux.a = 1;
aux.b = 2;
aux.s = v[1] + v[2] ;
h1[ aux.s % H1 ].push_back(aux);
for(i = 3 ; i <= n;i++)
{for(j = i+1;j<=n;j++)
{s = l- v[i] - v[j];
if(s < 0 )continue;
hh1 = s % H1;
N1 = h1[ hh1 ].size();
for(t = 0;t < N1 ; t++)
{aux = h1[ hh1 ][ t ];
if(aux.s == s && i != aux.a && i != aux.b && j!= aux.a && j != aux.b)
{sol++;
}
}
}
for(j = 1;j<i;j++)
{s = v[i] + v[j];
aux.s = s;
aux.a = i;
aux.b = j;
h1[ s % H1 ].push_back(aux);
}
}
}
void afisare(){
freopen("oite.out","w",stdout);
printf("%d ",sol);
}
int main(){
citire();
solve();
afisare();
return 0;}