Cod sursa(job #183418)

Utilizator nusmaibunkeleviprofesor cicalescu nusmaibunkelevi Data 22 aprilie 2008 08:31:49
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<stdio.h>

int main()
{
int s,v[101]={0},sm,da=0;
int n,i,j,k,t;
int x[7]={0},up,avans;
freopen("loto.in","r",stdin);
freopen("loto2.out","w",stdout);
scanf("%d%d",&n,&s);
for(i=1;i<=n;i++) scanf("%d",&v[i]);
for(i=1;i<=n;i++)
	for(j=i+1;j<=n;j++)
		if(v[i]>v[j]) {t=v[i];v[i]=v[j];v[j]=t;}
if(6*v[1]>s||6*v[n]<s) {printf("-1");return 0;}

k=1;x[k]=0; sm=0; avans=1;
while(k){
	up=0;
	if(x[k]<n) {if(avans) sm=sm-v[x[k]];
				x[k]++;
				sm=sm+v[x[k]];up=1;
				avans=1;
			   }
	if(sm>s||!up) {sm=sm-v[x[k]];k--;avans=1;}

	if(up)
		if(k==6) { //	sm=0;
				   //	for(i=1;i<=6;i++) sm+=v[x[i]];
					if(sm==s) {da=1;break;}
				 }
		else {k++;x[k]=x[k-1]-1;avans=0;}
   //	else {sm=sm-v[x[k]];k--;avans=1;}
}
if(da)
	for(i=1;i<=6;i++) printf("%d ",v[x[i]]);
else
	printf("-1");
return 0;
}