Cod sursa(job #1069423)

Utilizator DGVanceaDragos Gabriel Vancea DGVancea Data 29 decembrie 2013 23:55:32
Problema Loto Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <stdio.h>
#include <algorithm>

using namespace std;


int n,s,l;
int a[110];
int v[1000010];
  int search(int x)
{
       int st=1,m,dr=l;

       while (st<=dr)
       {
             m=(st+dr)/2;

             if (v[m]==x) return 1;
             else if (x<v[m]) dr=m-1;
                  else st=m+1;
       }

       return 0;
}

int main()
{
    freopen("loto.in","r",stdin);
    freopen("loto.out","w",stdout);

    scanf("%d %d ",&n,&s);

    int i,j,k,x;

    for (i=1;i<=n;i++) scanf("%d ",&a[i]);

    for (i=1;i<=n;i++)
      for (j=1;j<=n;j++)
        for (k=1;k<=n;k++) v[++l]=a[i]+a[j]+a[k];

    sort(v+1,v+l+1);

    for (i=1;i<=n;i++)
      for (j=1;j<=n;j++)
        for (k=1;k<=n;k++)
        {
            x=s-a[i]-a[j]-a[k];
            if (search(x))
            {
                 printf("%d %d %d ",a[i],a[j],a[k]);
                 for (i=1;i<=n;i++)
                   for (j=1;j<=n;j++)
                     for (k=1;k<=n;k++)
                       if (a[i]+a[j]+a[k]==x)
                       {
                            printf("%d %d %d ",a[i],a[j],a[k]);
                            printf("\n");
                            return 0;
                       }
            }
        }

    printf("-1\n");

    return 0;
}