Cod sursa(job #348108)

Utilizator serbanlupulupulescu serban serbanlupu Data 14 septembrie 2009 00:59:34
Problema Oite Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
//infoarena 
//pb	:	Oite

#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

#define PRIM 1000001

vector<int > H[PRIM];
int	cant[1025];
int lana;
int nr_cant;

/*
bool check(int lana)
{
	vector<int >::iterator it;
	for (it=H[lana%PRIM].begin(); it<H[lana%PRIM].end(); it++)
		if (H[lana%PRIM]==lana)
			return 1;
	return 0;
}

void solve()
{
	fstream f("oite.in", ios::in);
	f>>nr_cant;

	for (int i=1; i<=nr_cant; ++i)
		f>>cant[i];

	for (int i=1; i<=nr_cant; ++i)
		for (int j=i+1; j<=nr_cant; ++j)
			if (check(cant[i]+cant[j])==0)
				H[(cant[i]+cant[j])%PRIM].push_back(cant[i]+cant[j]);

	for (int i=1; i<=nr_cant; ++i)
		for (int j=1; j<=nr_cant; ++j)
		{
			int lana_aux;
			lana_aux=lana-v[i]-v[j];
			if (lana_aux > 0)
				if (check(lana_aux)==1)
				{
					afisare(lana_aux, i, j);
					return;
				}
		}
	stream g("oite.out", ios::out);
	
}

*/

void solve()
{
	fstream f("oite.in", ios::in);
	f>>nr_cant;
	f>>lana;

	for (int i=1; i<=nr_cant; ++i)
		f>>cant[i];
	f.close();

	int nr=0;
	for (int i=1; i<=nr_cant-3; ++i)
		for (int j=i+1; j<=nr_cant-2; ++j)
			for (int k=j+1; k<=nr_cant-1; ++k)
				for (int q=k+1; q<=nr_cant; ++q)
					if ( (cant[i]+cant[j]+cant[k]+cant[q])==lana )
						++nr;
	fstream g("oite.out", ios::out);
	g<<nr<<"\n";
	g.close();
}

int main()
{
	solve();
	return 0;
}