Cod sursa(job #1747422)

Utilizator radu9876Radu Sirghe radu9876 Data 24 august 2016 21:19:42
Problema Loto Scor 25
Compilator c Status done
Runda Arhiva de probleme Marime 2.71 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 fofor(unsigned int n,unsigned int *a, unsigned int m, unsigned int *r){
    unsigned int *p1,*p2,*p3,*p4,*p5,*p6, *lim=&a[n-1];
    for(p1=a;p1<=lim;p1++){
        for(p2=p1;p2<=lim;p2++){
            for(p3=p2;p3<=lim;p3++){
                for(p4=p3;p4<=lim;p4++){
                    for(p5=p4;p5<=lim;p5++){
                        for(p6=p5;p6<=lim;p6++){
                            unsigned int ss=*p1+*p2+*p3+*p4+*p5+*p6;
                            if(ss>m) break;
                            if(ss==m){
                                r[0]=*p1;
                                r[1]=*p2;
                                r[2]=*p3;
                                r[3]=*p4;
                                r[4]=*p5;
                                r[5]=*p6;
                                return 1;
                            }
                        }
                    }
                }
            }
        }
    }
    return 0;
}

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]);
    int ok=fofor(n,val,s,r);
    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;
}