Cod sursa(job #712285)

Utilizator myshuSpatariu Mihai-Constantin myshu Data 13 martie 2012 11:43:15
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<fstream>
using namespace std;
ofstream fcout("loto.out");
int w[7],v[101];
int rez(int k,int s3,int j,int p8)
{
	int s,p,i;
	s=s3/k;
	if(s>6)return 0;
	p=s3-s*k;
	for(i=p8;i>p8-s;i--)
		w[i]=k+v[1];
	if(p8-s==0&&p!=0)return 0;
	if(p==0){for(i=1;i<6;i++)
		     fcout<<w[i]<<' ';
			 fcout<<w[6]<<'\n';
			return 1;}
	else for(i=j;i>=2;i--)
			if(v[i]-v[1]<=p)if(rez(v[i]-v[1],p,i,p8-s))return 1;
	return 0;
}
int main()
{
	ifstream fcin("loto.in");
	int n,s,s2,s3,aux,mx=0,i;
	fcin>>n>>s;
	for(i=1;i<=n;i++)
		fcin>>v[i];
	for(i=2;i<=n;i++)
		{if(i>mx)mx=i;
		 if(v[i]<v[i-1]){aux=v[i];v[i]=v[i-1];v[i-1]=aux;if(i>2)i=i-2;}
		 else i=mx;}
	 s2=6*v[1];w[1]=w[2]=w[3]=w[4]=w[5]=w[6]=v[1];
	 s3=s-s2;
	 while(v[n]-v[1]>s3){n--;if(n==0){fcout<<-1<<'\n';return 0;}}
	 for(i=n;i>=2;i--)
		if(rez(v[i]-v[1],s3,i,6))return 0;
	 if(n==1&&s3==0)fcout<<v[1]<<' '<<v[1]<<' '<<v[1]<<' '<<v[1]<<' '<<v[1]<<' '<<v[1]<<'\n';
	 else  fcout<<-1<<'\n';
	 return 0;
}