Cod sursa(job #497134)

Utilizator loginLogin Iustin Anca login Data 1 noiembrie 2010 18:02:04
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
# include <fstream>
# include <vector>
# include <algorithm>
# define H 1000000
using namespace std;
struct nod{
		short int a, b;
		nod(){}
		nod(short int A, short int B){a=A;b=B;}};
int n, S, v[1099];
long long sol;
vector<nod> h[H+6];
void read ()
{
	ifstream fin ("oite.in");
	fin>>n>>S;
	for(int i=1;i<=n;++i)
		fin>>v[i];
	sort (v+1, v+n+1);
}
void solve ()
{
	int nr, i, j;
	for (i=1;i<n;++i)
		for(j=i+1;j<=n;++j)
		{
			nr=v[i]+v[j];
			h[nr%H].push_back(nod(i,j));
		}
	for (i=1;i<n;++i)
		for(j=i+1;j<=n;++j)
		{
			nr=S-v[i]-v[j];
			if (nr>=0)
				for(vector<nod>::iterator I=h[nr%H].begin();I<h[nr%H].end();++I)
					if (I->a>j && v[I->a]+v[I->b]==nr)
						++sol;
		}
}
int main ()
{
	read ();
	solve ();
	ofstream fout ("oite.out");
	fout<<sol;
	return 0;
}