Cod sursa(job #2345656)

Utilizator dianaICHBghita diana dianaICHB Data 16 februarie 2019 16:04:08
Problema Loto Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 4.35 kb
#include <cstdio>
#include <algorithm>
#include<ctime>
using namespace std;
int v[105];
int n,s,con,sol=0,c1,r1,c2,r2,nr1,nr2,nr3,nr4,nr5,nr6;
unsigned long long int start,fin;
int main()
{
    freopen("loto.in","r",stdin);
    freopen("loto.out","w",stdout);
    int i,x,x2,x3;
   // start=clock();
    scanf("%d%d",&n,&s);
    con=0;
    c1=s/6;
    nr1=0;
    nr2=0;
    for (i=0; i<n; i++)
    {
        scanf("%d",&x);
        if (x<=s-5)
        {
            v[con]=x;
            con++;
        }

    }
    sort (v,v+con);
   // fin=clock();
  //  printf("%d \n",fin-start);
  /*  if (nr1!=0)
    {
        if (r1==0)
        {
            for (i=1; i<=6; i++)
                printf("%d ",nr1);
            return 0;
        }
        else
        {
            if (nr2!=0)
            {
                for (i=1; i<=5; i++)
                    printf("%d ",nr1);
                printf("%d",nr2);
                return 0;
            }
        }
    }*/
    ///aici
    x=0;
    for (i=con-1; i>=0; i--)
    {
        if (v[i]<=c1)
        {
            x=i;
            i=-1;
        }
    }
    int sum=0;
    if (v[x]*6==s)
    {
        printf("%d %d %d %d %d %d",v[x],v[x],v[x],v[x],v[x],v[x]);
        return 0;
    }
    //printf("%d %d",x,v[x]);
    for (nr1=x+1; nr1<con; nr1++)
    {
        for (nr2=0; nr2<=x; nr2++)
        {
            sum=s-v[nr1]-v[nr2];

             if (sum>0)
            {
                int c2,r2;
                c2=sum/4;
                r2=sum%4;
                x2=0;
                for (i=con-1; i>=0; i--)
                {
                    if (v[i]<=c2)
                    {
                        x2=i;
                        i=-1;
                    }
                }
               // printf("nr1=%d nr2=%d sum=%d x2=%d v[x2]=%d\n",v[nr1],v[nr2],sum,x2,v[x2]);
                if (v[x2]*4==sum)
                {
                 printf("%d %d ",v[nr1],v[nr2]);
                 for (i=1;i<=4;i++)
                 {
                 printf("%d ",v[x2]);
                 }
                 return 0;
                }
               // printf("nr1=%d nr2=%d sum=%d x2=%d v[x2]=%d\n",v[nr1],v[nr2],sum,x2,v[x2]);
                for (nr3=x2+1; nr3<con; nr3++)
                {
                    for (nr4=0; nr4<=x2; nr4++)
                    {
                        sum=s-v[nr1]-v[nr2]-v[nr3]-v[nr4];
                         if (sum>0)
                        {
                            //int c2,r2;
                            c2=sum/2;
                            r2=sum%2;
                            x3=0;
                            for (i=con-1; i>=0; i--)
                            {
                                if (v[i]<=c2)
                                {
                                    x3=i;
                                    i=-1;
                                }
                            }
                            if (v[x3]*2==sum)
                            {
                                printf("%d %d %d %d %d %d",v[nr1],v[nr2],v[nr3],v[nr4],v[x3],v[x3]);
                                return 0;
                            }
                     //       printf("nr3=%d nr4=%d sum=%d\n",v[nr3],v[nr4],sum);
                            for (nr5=x3+1; nr5<con; nr5++)
                            {
                                for (nr6=0; nr6<=x3; nr6++)
                                {
                                    sum=s-v[nr1]-v[nr2]-v[nr3]-v[nr4]-v[nr5]-v[nr6];
                                 //   printf("nr5=%d nr6=%d sum=%d\n",v[nr5],v[nr6],sum);
                                    if (sum==0)
                                    {
                                        sol=1;
                                        printf("%d %d %d %d %d %d\n",v[nr1],v[nr2],v[nr3],v[nr4],v[nr5],v[nr6]);
                                        return 0;
                                    }
                                    //sum=sum+v[nr5]+v[nr6];
                                }
                            }
                        }
                       // sum=sum+v[nr3]+v[nr4];

                    }
                }
            }
      //  sum=sum+v[nr1]+v[nr2];
        }
    }
    // bac(1,0);
    // if (sol==0)
        printf("-1");
    return 0;
}