Cod sursa(job #812374)

Utilizator costel93FMI - Dumea Eduard Constantin costel93 Data 13 noiembrie 2012 20:07:30
Problema Loto Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.49 kb
#include <stdio.h>
#include <vector>
#define mod 666013

using namespace std;
FILE *f=fopen("loto.in","r"), *g=fopen("loto.out","w");
int v[101];

void quick_sort(int v[],int left,int right)
{
	int i=left, j=right, p=v[(left+right)/2],aux;
	while(i<=j)
	{
		while(v[i]<p)
			i++;
		while(v[j]>p)
			j--;
		if(i<=j)
		{
			aux=v[i];
			v[i]=v[j];
			v[j]=aux;
			i++;
			j--;
		}
	}
	if(left<j)
		quick_sort(v,left,j);
	if(i<right)
		quick_sort(v,i,right);
}
int main()
{
	long sum;
	int n, i, j, k, s, t, u;
	
	fscanf(f,"%d""%ld", &n, &sum);
	
	for(i=0;i<n;i++)

		fscanf(f, "%d", &v[i]);
	
	quick_sort(v, 0, n-1);

	if( (v[0] * 6)>sum && (v[n-1] * 6)<sum)
	{
		fprintf(g, "%d", -1);
		return 0;
	}
	
	for(i=0; i<n && (v[i] * 6) <= sum; i++)
		for(j=i; j<n && ((v[i] + v[j] * 5) <= sum) && ((v[i] + v[n-1] * 5) >= sum); j++)
			for(k=j; k<n && ((v[i] + v[j] + v[k] * 4) <= sum) && ((v[i] + v[j] + v[n-1] * 4) >= sum); k++)
				for(t=k; t<n && ((v[i] + v[j] + v[k] + v[t] * 3) <= sum) && ((v[i] + v[j] + v[k] + v[n-1] * 3) >= sum); t++)
					for(s=t; s<n && ((v[i] + v[j] + v[k] + v[t] + v[s] * 2) <= sum) && ((v[i] + v[j] + v[k] + v[t] + v[n-1] * 2) >= sum); s++)
						for(u=s; u<n && ((v[i] + v[j] + v[k] + v[t] + v[s] + v[n-1]) >= sum); u++)
							if((v[i] + v[j] + v[k] + v[t] + v[s] + v[u])==sum)
							{
								fprintf(g, "%ld %ld %ld %ld %ld %ld", v[i], v[j], v[k], v[t], v[s], v[u]);
								return 0;
							}
	
	fprintf(g, "%d", -1);
	
	return 0;
}