Cod sursa(job #389275)

Utilizator Andrei200Andrei200 Andrei200 Data 1 februarie 2010 13:25:03
Problema Oite Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

#define file_in "oite.in"
#define file_out "oite.out"


#define mod 666013
#define Nmax (1<<10)+3

int v[Nmax],i,j,k,nr,s,n;

/*int cauta(int x)
{
	int mij,ls,ld;
	
	ls=k;
	ld=n;
	
	while(ls<=ld)
	{
		mij=(ls+ld)>>1;
		
		if (mij==x)
			return 1;
		if (mij>x)
		    ls=mij+1;
		else
	        ld=mij-1;
	}

	if (mij==x) 
		return 1;
	return 0;
}*/


int main()
{
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d %d", &n, &s);
	for (i=1;i<=n;++i)
	{
		scanf("%d", &v[i]);
	}
	
	sort(v+1,v+n+1);
	
	nr=0;
	for (i=1;i<=n-3;++i)
		 for (j=i+1;j<=n-2;++j)
			  for (k=j+1;k<=n-1;++k)
				   /*if(cauta(s-v[i]-v[j]-v[k]))*/
				   if (binary_search(v+k+1,v+n+1,s-v[i]-v[j]-v[k]))
					   nr++;
				   
	printf("%d", nr);	
	
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
	
}