Cod sursa(job #524417)

Utilizator SadmannCornigeanu Calin Sadmann Data 21 ianuarie 2011 13:12:39
Problema Loto Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.75 kb
#include<stdio.h>
FILE *in,*out;
int v[101],n,i,x1,x2,x3,x4,x5,x6,S;

int verificare();

void Quicksort (int data[],int left,int right) {
   int mid,tmp,i,j;
   

   i = left;
   j = right;
   mid = data[(left + right)/2];
   do {
        while(data[i] < mid)
           i++;
       while(mid < data[j])
           j--;
       if (i <= j) {
           tmp = data[i];
           data[i] = data[j];
           data[j] = tmp;
           i++;
           j--;
       }
   } while (i <= j);
   if (left < j) Quicksort(data,left,j);
   if (i < right) Quicksort(data,i,right);
}


int main()
{
	in=fopen("loto.in","rt");
	out=fopen("loto.out","wt");
	fscanf(in,"%d %d",&n,&S);
	for(i=1;i<=n;i++)
		fscanf(in,"%d",&v[i]);
	Quicksort(v,1,n);
	if( !verificare() )
		fprintf(out,"-1");
		
}
	
int verificare()
{
	for(x1=1;x1<=n;x1++)
	{
		if(v[x1]>=S)
			break;
		else
			for(x2=1;x2<=n;x2++)
			{
				if(v[x1]+v[x2]>=S)
					break;
				else
				{
					for(x3=1;x3<=n;x3++)
						if(v[x1]+v[x2]+v[x3]>=S)
							break;
						else
						{
							for(x4=1;x4<=n;x4++)
							{
								if(v[x1]+v[x2]+v[x3]+v[x4]>=S)
									break;
								else
								{
									for(x5=1;x5<=n;x5++)
									{
										if(v[x1]+v[x2]+v[x3]+v[x4]+v[x5]>=S)
											break;
										else
										{
											for(x6=1;x6<=n;x6++)
											{
												if(v[x1]+v[x2]+v[x3]+v[x4]+v[x5]+v[x6]>S)
													break;
												else
													if(v[x1]+v[x2]+v[x3]+v[x4]+v[x5]+v[x6]==S)
													{
														fprintf(out,"%d %d %d %d %d %d",v[x1],v[x2],v[x3],v[x4],v[x5],v[x6]);
														return 1;
													}
											}
										}
									}
								}
							}
						}
					return 0;
				}
			}
	}
}