Cod sursa(job #661006)

Utilizator cristibBalu Cristian cristib Data 13 ianuarie 2012 16:34:47
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<fstream>
#include<vector>
#define NMAX 110
#define MOD 666013

using namespace std;

ifstream f("loto.in");
ofstream g("loto.out");

int a[NMAX], n, S;
struct st
{
	int s, a, b, c;
}r;
vector<st> h[MOD+100];

void Citeste()
{
	int i;
	f>>n>>S;
	for (i=1; i<=n; ++i) f>>a[i];
}

void Rezolva()
{
	int i, j, k, ok=0, y, x;
	vector<st>:: iterator it;
	for (i=1; i<=n; ++i)
		for (j=i; j<=n; ++j)
			for (k=j; k<=n; ++k)
				if (a[i]+a[j]+a[k]<=S)
				{
					r.s=a[i]+a[j]+a[k]; r.a=a[i]; r.b=a[j]; r.c=a[k];
					x=r.s%MOD;
					h[x].push_back(r);
					x=S-r.s;
					y=x%MOD;
					for (it=h[y].begin(); it!=h[y].end(); ++it)
						if ((*it).s==x)
						{
							g<<a[i]<<" "<<a[j]<<" "<<a[k]<<" "<<(*it).a<<" "<<(*it).b<<" "<<(*it).c<<"\n";
							ok=1; i=n+1; j=n+1; k=n+1;
							break;
						}
				}
	if (!ok) g<<"-1\n";
}

int main()
{
	Citeste();
	Rezolva();
	f.close();
	g.close();
	return 0;
}