Pagini recente » Cod sursa (job #86120) | Cod sursa (job #3036805) | Cod sursa (job #1251094) | Cod sursa (job #2973666) | Cod sursa (job #415818)
Cod sursa(job #415818)
#include<cstdio>
#include<vector>
#define pb push_back
#define mp make_pair
#define f first
#define s second
const int mod = 666013;
const int maxn = 1050;
using namespace std;
vector <pair<pair<int,int>,int> > hash[mod];
int i , j , n , l , v[maxn] , sol , cnt , k , sum;
int main()
{
freopen("oite.in","r",stdin);
freopen("oite.out","w",stdout);
scanf("%d %d",&n,&l);
for( i = 1 ; i <= n ; ++i )
scanf("%d",&v[i]);
for ( i = 1 ; i <= n ; ++i )
for( j = i + 1 ; j <= n ; ++j )
hash[(v[i] + v[j]) % mod].pb(mp(mp(i,j),v[i] + v[j]));
for ( i = 1 ; i <= n ; ++i )
for( j = i + 1 ; j <= n ; ++j ) {
sum = (l - (v[i] + v[j])) % mod;
if ( sum < 0 ) continue;
cnt = 0;
for( k = 0 ; k < hash[sum].size() ; ++k )
if ( i != hash[sum][k].f.f && i != hash[sum][k].f.s && j != hash[sum][k].f.s && j != hash[sum][k].f.s )
if( hash[sum][k].s == sum ) cnt++ ;
sol += cnt;
}
printf("%d\n",sol / 8);
return 0;
}