Cod sursa(job #1415408)

Utilizator andrei124Andrei Roman andrei124 Data 4 aprilie 2015 15:38:57
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include<fstream>
#include<iostream>
#include<algorithm>
using namespace std;
ifstream in("loto.in");
ofstream out("loto.out");
int v[101],w[1000001], z;

bool cautbin(int x)
{
    int pas=1<<19,i=0;
    for(i=0;pas>0;pas=pas>>1)
        if(i+pas<=z&&w[i+pas]<=x)i+=pas;
    return w[i]==x;
}


int main()
{
    int n,i,s,a,b,c,k=1,j,x=1,i1,i2,i3;
    in>>n>>s;
    for(i=1;i<=n;i++)in>>v[i];
    i=1;
    for(a=1;a<=n;a++)
        for(b=a;b<=n;b++)
          for(c=b;c<=n;c++)
            {
                ++z;
                w[z]=v[a]+v[b]+v[c];

            }
    sort(w+1,w+z+1);

    for(i=1;i<=n;i++)
        for(j=i;j<=n;j++)
           for(k=j;k<=n;k++)
           {
               x=s-v[i]-v[k]-v[j];
               if(cautbin(x)==true)
               {
                   out<<v[i]<<" "<<v[j]<<" "<<v[k]<<" ";
                   for(i1=1;i1<=n;i1++)
                    for(i2=i1;i2<=n;i2++)
                     for(i3=i2;i3<=n;i3++)
                       if(v[i1]+v[i2]+v[i3]==x)
                   {
                       out<<v[i1]<<" "<<v[i2]<<" "<<v[i3];
                       return 0;
                   }
               }
           }

    out<<-1;
    return 0;
}