Cod sursa(job #811642)

Utilizator UnforgivenMihai Catalin Botezatu Unforgiven Data 12 noiembrie 2012 19:15:26
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 kb
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;

int a[100];
bool myfunction (int i,int j) { return (i>j); }

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()
{
    FILE *input = fopen("loto.in","r");
    FILE *output = fopen("loto.out","w");
    long s;
    int n;
    fscanf(input,"%d%ld",&n,&s);
    for (int i=0;i<n;i++)
    {

        fscanf(input,"%ld",&a[i]);
    }
    quick_sort(a,0,n-1);

    int stop = 1;
    int i,x,y,z,k,m = 0;
    for (i=0;i<n&&stop&&a[i]*6>=s;i++)
    for (x=i;x<n&&stop&&a[i]+a[x]*5>=s&&a[i]+a[n-1]*5<=s;x++)
    for (y=x;y<n&&stop&&a[i]+a[x]+a[y]*4>=s&&a[i]+a[x]+a[n-1]*4<=s;y++)
    for (z=y;z<n&&stop&&a[i]+a[x]+a[y]+a[z]*3>=s&&a[i]+a[x]+a[y]+a[n-1]*3<=s;z++)
    for (k=z;k<n&&stop&&a[i]+a[x]+a[y]+a[z]+a[k]*2>=s&&a[i]+a[x]+a[y]+a[z]+a[n-1]*2<=s;k++)
    for (m=k;m<n&&stop&&a[i]+a[x]+a[y]+a[z]+a[k]+a[m]>=s;m++)
    if (a[i]+a[x]+a[y]+a[z]+a[k]+a[m] == s)
    {
        fprintf(output,"%ld %ld %ld %ld %ld %ld",a[i],a[x],a[y],a[z],a[k],a[m]);
        stop = 0;
    }
    if (stop) fprintf(output,"-1");
    fclose(input);
    fclose(output);
    return 0;
}