Cod sursa(job #496565)

Utilizator loginLogin Iustin Anca login Data 29 octombrie 2010 18:44:36
Problema Oite Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
# include <fstream>
# include <iostream>
# include <vector>
# include <algorithm>
# define DIM 1099
# define H 999999
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[DIM];
long long sol;
vector<nod> h[H+666];

void read ()
{
	ifstream fin ("oite.in");
	fin>>n>>S;
	for(int i=1;i<=n;++i)
		fin>>v[i];
}

void solve ()
{
	int nr;
	for (int i=1;i<n;++i)
		for(int j=i+1;j<=n;++j)
		{
			nr=v[i]+v[j];
			h[nr%H].push_back(nod(i,j));
		}
	for (int i=1;i<n;++i)
		for(int j=i+1;j<=n;++j)
		{
			nr=S-v[i]-v[j];
			if (nr>=0 && h[nr%H].size())
				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;
}