Cod sursa(job #306093)

Utilizator beyond_k7aOnutu Catalin beyond_k7a Data 19 aprilie 2009 18:23:52
Problema Loto Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.93 kb
#include<fstream>
using namespace std;
long s,a[103],i,j,k,ii,jj,kk,n,fi=0,o,p;






int c2[][3] = {{5,1},{4,2},{3,3},{2,4},{1,5}};
int c3[][4] = {{4,1,1},{3,1,2},{3,2,1},{2,1,3},{2,3,1},{2,2,2},{1,2,3},{1,3,2}};
int c4[][5] = {{3,1,1,1},{2,1,1,2},{2,1,2,1},{2,2,1,1},{1,1,1,3},{1,1,3,1},{1,3,1,1},{1,1,2,2},{1,2,1,2},{1,2,2,1}};
int c5[][6] = {{2,1,1,1,1},{1,2,1,1,1},{1,1,2,1,1},{1,1,1,2,1},{1,1,1,1,2}};
int main()
{
 ifstream f("loto.in");
 ofstream g("loto.out");
 
 f>>n>>s;
 for(i=1;i<=n;i++)
  f>>a[i];
 sort(a+1,a+n+1); 
 
 for(i=1;i<=n && !fi ;i++)
 {
  if(6*a[i]==s)
  {

   for(o=1;o<=6;o++) 
    g<<a[i]<<" "; 
   fi=1;  
  }
  for(j=1;j<=n && !fi ;j++)
  {
   for(p=0;p<5;p++)
   {
    if(c2[p][0]*a[i]+c2[p][1]*a[j]==s)
    {
     for(o=1;o<=c2[p][0];o++)
      g<<a[i]<<" ";               
     for(o=1;o<=c2[p][1];o++)
      g<<a[j]<<" ";
      fi=1;
    // g<<endl<<"2 "<<p;
      break;
    }   
   }
   for(k=1;k<=n && !fi ;k++)
   {
    for(p=0;p<8;p++)
    {
     if(c3[p][0]*a[i]+c3[p][1]*a[j]+c3[p][2]*a[k]==s)
     {
      for(o=1;o<=c3[p][0];o++)
       g<<a[i]<<" ";               
      for(o=1;o<=c3[p][1];o++)
       g<<a[j]<<" ";
      for(o=1;o<=c3[p][2];o++)
       g<<a[k]<<" ";
    //  g<<endl<<"3 "<<p;
       fi=1;
       break;
     }   
    }     
    for(ii=1;ii<=n && !fi ;ii++)
    {
     for(p=0;p<10;p++)
     {
      if(c4[p][0]*a[i]+c4[p][1]*a[j]+c4[p][2]*a[k]+c4[p][3]*a[ii]==s)
      {
       for(o=1;o<=c4[p][0];o++)
        g<<a[i]<<" ";               
       for(o=1;o<=c4[p][1];o++)
        g<<a[j]<<" ";
       for(o=1;o<=c4[p][2];o++)
        g<<a[k]<<" ";
       for(o=1;o<=c4[p][3];o++)
        g<<a[ii]<<" ";
//       g<<endl<<"4 "<<p;
       fi=1;
       break;
      }   
     }     
     
     for(jj=1;jj<=n && !fi ;jj++)
     {
      for(p=0;p<10;p++)
      {
       if(c5[p][0]*a[i]+c5[p][1]*a[j]+c5[p][2]*a[k]+c5[p][3]*a[ii]+c5[p][4]*a[jj]==s)
       {
        for(o=1;o<=c5[p][0];o++)
         g<<a[i]<<" ";         
        for(o=1;o<=c5[p][1];o++)
         g<<a[j]<<" ";
        for(o=1;o<=c5[p][2];o++)
         g<<a[k]<<" ";
        for(o=1;o<=c5[p][3];o++)
         g<<a[ii]<<" ";
        for(o=1;o<=c5[p][4];o++)
         g<<a[jj]<<" ";
   //     g<<endl<<"5 "<<p;
        fi=1;
        break;
       }   
      }   
      for(kk=1;kk<=n && !fi;kk++)
      {
       if(a[i]+a[j]+a[k]+a[ii]+a[jj]+a[kk]==s)
       {
        g<<a[i]<<" "<<a[j]<<" "<<a[k]<<" "<<a[ii]<<" "<<a[jj]<<" "<<a[kk];
        fi=1;           
       }
       if(a[i]+a[j]+a[k]+a[ii]+a[jj]+a[kk]>s)
        break;
      }
      if(a[i]+a[j]+a[k]+a[ii]+a[jj]>s)
       break;
     }
      if(a[i]+a[j]+a[k]+a[ii]>s)
       break;
    }
    if(a[i]+a[j]+a[k]>s)
       break;
   }
   if(a[i]+a[j]>s)
       break;
  }
  if(a[i]>s)
       break;
 }
 
 if(!fi)
  g<<"-1";
 g<<'\n';
 f.close();
 g.close();
 return 0;   
}