Cod sursa(job #1052981)

Utilizator lucamateiLuca Matei lucamatei Data 12 decembrie 2013 00:00:08
Problema Loto Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <fstream>
#include <algorithm>

using namespace std;
ifstream f("loto.in");
    ofstream g("loto.out");
    long long s,S, v[1000000];int n,i,j,k,p,ok,x,y;
    struct nod{int a,b,c,d;};
    nod v1[1000000],m;
    bool cmp(nod x,nod y)
    {return x.d<y.d; }

    int caut(long ok, int x, int y)
   {int j,r;

                   while (x<=y)
                { j=(x+y)/2;
                   if(ok==v1[j].d) {r=j;break;}
                   else if(ok<v1[j].d)
                    y=j-1;
                   else x=j+1;}
        if(x<=y)return r; else return -1;


    }

int main()
{
    f>>n>>s;
     for(i=0;i<n;i++)
     f>>v[i];
 f.close();p=0;
      for(i=0;i<n;i++)
         for(j=0;j<n;j++)
          for(k=0;k<n;k++)
          {
              p++;
              v1[p].d=v[i]+v[j]+v[k];v1[p].a=v[i];v1[p].b=v[j];v1[p].c=v[k];
            }
            sort(v1+1,v1+p+1,cmp);
           // for(S=1;S<=p;S++)
           // g<<v1[S].a<<' '<<v1[S].b<<' '<<v1[S].c<<' '<<v1[S].d<<'\n';
int r=1;
           for(i=1;i<=p;i++)
            {
                ok=s-v1[i].d;
                r=caut(ok,1,n);//g<<r<<",,,,,,,,,,,,";
                if(r!=-1)  {g<<v1[i].a<<' '<<v1[i].b<<' '<<v1[i].c<<' '<<v1[r].a<<' '<<v1[r].b<<' '<<v1[r].c; g.close();return 0;}


           }


g<<"-1";
g.close();

         return 0;
}