Cod sursa(job #674849)

Utilizator SebiSebiPirtoaca George Sebastian SebiSebi Data 6 februarie 2012 20:14:04
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
vector <int> a[666013];
int v[101];
int cauta(int x)
{
	int n,i,k;
	k=x%666013;
	n=int(a[k].size())-1;
	for(i=0;i<=n;i++)
		if(a[k][i]==x)
			return 1;
	return 0;
}
int main ()
{
	int n,i,j,k,sum,c,d,s;
	ifstream f("loto.in");
	ofstream g("loto.out");
	f>>n>>sum;
	for(i=1;i<=n;i++)
		f>>v[i];
	f.close();
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			for(k=1;k<=n;k++) {
				s=v[i]+v[j]+v[k];
				a[s%666013].push_back(s);
			}
	d=0;
	for(i=1;i<=n;i++) {
		for(j=1;j<=n;j++) {
			for(k=1;k<=n;k++) {
				c=sum-(v[i]+v[j]+v[k]);
				if(cauta(c)) {
					g<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";
					d=1;
					break;
				}
			}
		if(d==1)
			break;
		}
	if(d==1)
		break;
	}
	if(d==0)
		g<<"-1";
	else {
		for(i=1;i<=n;i++)
			for(j=1;j<=n;j++)
				for(k=1;k<=n;k++) {
					if(c==(v[i]+v[j]+v[k])) {
						g<<v[i]<<" "<<v[j]<<" "<<v[k];
						break;
					}
				}
	}
	g.close();
	return 0;
	}