Cod sursa(job #952672)

Utilizator primulDarie Sergiu primul Data 23 mai 2013 19:48:17
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.85 kb
#include <fstream>
#include <algorithm>
 
using namespace std;
 
ifstream f("loto.in");
ofstream g("loto.out");
 
int i,iii,ii,ok,sol,dr,mij,x,st,n,nr=1,m,s[10000000],a[101];
 
int main()
{
    f>>n>>m;
    for (i=1;i<=n;i++)
     f>>a[i];
    for (i=1;i<=n;i++)
     for (ii=i;ii<=n;ii++)
      for (iii=ii;iii<=n;iii++)
          {
 
            s[nr]=a[i]+a[ii]+a[iii];nr++;
 
          }
     sort (s+1,s+nr+1);
 
     for (i=1;i<=nr;i++)
     {st=1;dr=nr;x=m-s[i];
         while (st<=dr)
          {
              mij=(st+dr)/2;
           if(x==s[mij])
            {
                ok=1;
                break;
            }
            else
              if(x<s[mij])
                dr=mij-1;
                else
                  st=mij+1;
          }
        if (ok)
        {
            sol=s[i];
            break;
        }
     }
       nr=1;
        if (sol==0)
          g<<"-1";
        else
        {
            for (i=1;i<=n;i++)
               for (ii=1;ii<=n;ii++)
                  for (iii=1;iii<=n;iii++)
                     {
                         s[nr++]=a[i]+a[ii]+a[iii];
                         if (s[nr-1]==sol)
                           {
                               g<<a[i]<<" "<<a[ii]<<" "<<a[iii]<<" ";
                            i=n;ii=n;iii=n;
                           }
                     }
              for (i=1;i<=n;i++)
               for (ii=1;ii<=n;ii++)
                  for (iii=1;iii<=n;iii++)
                     {
                         s[nr++]=a[i]+a[ii]+a[iii];
                         if (s[nr-1]==m-sol)
                           {
                               g<<a[i]<<" "<<a[ii]<<" "<<a[iii]<<" ";
                            i=n;ii=n;iii=n;
                           }
                     }
        }
    f.close();
    g.close();
}