Cod sursa(job #529602)

Utilizator dornescuvladVlad Eugen Dornescu dornescuvlad Data 5 februarie 2011 15:11:58
Problema Oite Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

const char iname[] = "oite.in";
const char oname[] = "oite.out";
const int nmax    = 1028;
const int  mod     =  366013;

using namespace std;

ifstream fin(iname);
ofstream fout(oname);

int c, buildsum, i, j, k;
int oaie[nmax];
vector<pair <int, int> > H[366115];
long long sol;

int main()
{
	fin >> c >> buildsum;
	for(i = 1; i <= c; i ++)
		fin >> oaie[i];
	sort(oaie + 1, oaie + c + 1);
	for(i = 1; i <= c; i ++)
		for(j = i + 1; j <= c; j ++)
			H[(oaie[i] + oaie[j]) % mod].push_back(make_pair(i, j));
	
	for(i = 1; i < c ; i ++)
		for(j = i + 1; j <= c; j ++)
			if(buildsum - oaie[i] - oaie[j] >= 0)
			{
				int ceva = buildsum - oaie[i] - oaie[j];
				for(int k = 0; k < H[ceva % mod].size(); k++)
					if(i < H[ceva % mod][k].first &&  H[ceva % mod][k].second < j )
						++sol;
			}
			
	fout << sol;
	return 0;
}