Cod sursa(job #1747400)

Utilizator radu9876Radu Sirghe radu9876 Data 24 august 2016 21:05:11
Problema Loto Scor 65
Compilator c Status done
Runda Arhiva de probleme Marime 1.72 kb
#include <stdio.h>
#include <stdlib.h>

unsigned int *bubbsort(unsigned int n,unsigned int *a){
    unsigned int i,sch;
    while(1){
        short int da=1;
        for(i=0;i<n-1;i++){
            if(a[i]>a[i+1]){
                da=0;
                sch=a[i];
                a[i]=a[i+1];
                a[i+1]=sch;
            }
        }
        if(da==1){
            return a;
            break;
        }
    }
}

void *splisort(unsigned int n,unsigned int *a){
}

int dasol(unsigned int n,unsigned int *a, unsigned int m, unsigned int *r, int pas, unsigned int *u){
    while(u>=a && *u>m) u--;
    int np=pas+1;
    int ok=0;
    while(u>=a){
        r[pas]=*u;
        if(pas==5)return *u==m?1:0;
        ok=dasol(n, a, m-*u, r, np, u);
        if(ok) break;
        u--;
    }
    return ok;
}

int main()
{
    unsigned int n,s,i,k=0,r[6]={0,0,0,0,0,0};
    FILE *fin;
    fin=fopen("loto.in","r");
    fscanf(fin,"%u %u",&n,&s);
    unsigned int *val=malloc(n*4);
    for(i=0;i<n;i++){
        fscanf(fin,"%u",&val[i]);
    }
    fclose(fin);
    bubbsort(n,val);
    /*for(i=n-1;i>=0 && k<6;i--){
        if(s/val[n]<=6-k){
            unsigned int k1=k;
            k=k+s/val[n];
            s=s%val[n];
            while(k1<k){
                r[k1]=val[n];
                k1++;
            }
        }
    }*/
    unsigned int *g=&val[n-1];
    while(g>=val && *g>2*s/3) g--;
    if(g<val) g=val;
    int ok=dasol(n, val, s, r, 0, g);
    if(!ok) ok=dasol(n, val, s, r, 0, &val[n-1]);
    FILE *fout;
    fout=fopen("loto.out","w");
    if(ok){
        for(i=0;i<6;i++){
            fprintf(fout,"%u ",r[i]);
        }
    }else fprintf(fout,"-1");
    return 0;
}