Cod sursa(job #361558)

Utilizator loginLogin Iustin Anca login Data 5 noiembrie 2009 20:09:07
Problema Loto Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.72 kb
# include <fstream>
using namespace std;
long long int n, s, v[105], x[10], sum, pp;
ofstream fout ("loto.out");

void citire ()
{
     int i;
     ifstream fin ("loto.in");
     fin>>n>>s;
     for (i=1;i<=n;i++)       
         fin>>v[i];
}

void afis ()
{
     int i;
     for (i=1;i<=6;i++)
         fout<<x[i]<<" ";
     
}

void bk (int k)
{
     int i;
     for (i=1;i<=n && k<=6 && pp==0;i++)
     {
         x[k]=v[i];
         sum += v[i];
         if (sum<=s)
         {
            if (sum==s && k==6)
               afis (), pp=1;
            else    
               if (k<6 && sum<s)
                  bk(k+1);
            
         }
         sum-=v[i];
     }
}

void sort ()
{
     int i, gata, cpt, capat;
     long long aux;
     gata=0;
     capat=n;
     while (!gata)
     {
           gata=1;
           cpt=capat;
           for (i=1;i<cpt;i++)  
               if (v[i]<v[i+1])
               {
                  aux=v[i], v[i]=v[i+1], v[i+1]=aux;
                  gata=0;
                  capat=i;
               }
     }
}

void qsort (int st, int dr)
{
     if (st<dr)
     {
               int i=st, j=dr, d=0;
               long long aux;
               while (i<j)
               {
                     if (v[i]<v[j])
                     {
                        aux=v[i], v[i]=v[i+1], v[i+1]=aux;
                        d=1-d;
                     }
                     i+=d;
                     j-=1-d;
               }
               qsort (st, i-1);
               qsort (i+1, dr);
     }
}
                           
int main ()
{
    citire ();
    qsort (1, n);
    bk (1);
    if (pp==0)
       fout<<"-1";
    return 0;
}