Cod sursa(job #811669)

Utilizator mariacMaria Constantin mariac Data 12 noiembrie 2012 19:53:24
Problema Loto Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.53 kb
#include<fstream>
#define mod 666013
using namespace std;

ifstream fin("loto.in");
ofstream fout("loto.out");
long long s,s2,s3,v[100];
struct nod
{
	int inf;
	char s[7];
	nod *next;
};
typedef nod *lista;

lista l[666014];

int main()
{
	int n,i,j,k;
	fin>>n;
	fin>>s;
	for(i=0;i<n;i++)
		fin>>v[i];
	for(i=0;i<666013;i++)
		l[i]=NULL;
		
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
			for(k=0;k<n;k++)
			{	
				s2=v[i]+v[j]+v[k];
				lista p;
				s3=s-s2;
				int ok=0;
                if(s3>0)for(p=l[s3%mod];p&&!ok;p=p->next)
							if(p->inf==s3)
							{	
															
								int nr;
								fout<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";
								
								nr=(int)(p->s[0]);
								nr*=10;
								nr+=(int)(p->s[1]);
								fout<<v[nr]<<" ";
								
								nr=(int)(p->s[2]);
								nr*=10;
								nr+=(int)(p->s[3]);
								fout<<v[nr]<<" ";
								nr=(int)(p->s[4]);
							
								nr*=10;
								nr+=(int)(p->s[5]);
								fout<<v[nr]<<" ";
								
						
								i=n+2;
								j=n+2;
								k=n+2;ok=1;
							}
				if(!ok)
				{   
				    for(p=l[s2%mod];p&&!ok;p=p->next)
						if(p->inf==s2)ok=1;
					if(!ok)
					{
						lista aux;
						aux=new nod;
					    aux->inf=s2;
						aux->s[0]=(char)(i/10);
						aux->s[1]=(char)(i%10);
						aux->s[2]=(char)(j/10);
						aux->s[3]=(char)(j%10);
						aux->s[4]=(char)(k/10);
						aux->s[5]=(char)(k%10);
						aux->next=l[s2%mod];
						l[s2%mod]=aux;
					}
				}
			}
		if(i!=n+3)fout<<-1;

	return 0;
}