Cod sursa(job #1555336)

Utilizator SoniaFlorinaHorchidan Sonia-Florina SoniaFlorina Data 22 decembrie 2015 17:20:08
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.88 kb
#include <iostream>
#include <fstream>
#include<algorithm>

using namespace std;

ifstream in("loto.in");
ofstream out("loto.out");

struct tip
{
   long suma;
   long a, b, c;
}sume[105];

int n, v[105],elem[7];
long long s;


int cauta(long x, long &r, long &s, long &t, long li, long ls)
{
   if(li>ls)
        return -1;
   else
   {
       long mij=(li+ls)/2;
       if(sume[mij].suma==x)
       {
           r=sume[mij].a;
           s=sume[mij].b;
           t=sume[mij].c;
           return 1;
       }
       else
          if(x<v[mij])
            return cauta(x,r,s,t,li,mij);
          else
            return cauta(x,r,s,t,mij+1,ls);

   }

}

int main()
{
    in>>n>>s;
    long i,j,k,p=1,ok=0,p1=0,p2=0,p3=0,p4=0,p5=0,p6=0;
    long ss=0;
    for(i=1;i<=n;i++)
        in>>v[i];
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            for(k=1;k<=n;k++)
                {
                    sume[p].suma=v[i]+v[j]+v[k];
                    sume[p].a=v[i];
                    sume[p].b=v[j];
                    sume[p].c=v[k];
                    p++;
                }

    for(i=1;i<=n && !ok;i++)
        for(j=1;j<=n &&!ok;j++)
            for(k=1;k<=n && !ok;k++)
            {
                ss=v[i]+v[j]+v[k];
                if(cauta(s-ss,p4,p5,p6,1,n)==1)
                    {
                        ok=1;
                        p1=v[i];
                        p2=v[j];
                        p3=v[k];
                    }
            }
    if(!ok)
        out<<"-1";
    else
        {
            elem[1]=p1;
            elem[2]=p2;
            elem[3]=p3;
            elem[4]=p4;
            elem[5]=p5;
            elem[6]=p6;
            sort(elem+1,elem+7);
            for(i=1;i<=6;i++)
                out<<elem[i]<<' ';
        }
    in.close();
    out.close();


    return 0;
}