Cod sursa(job #270756)

Utilizator DraStiKDragos Oprica DraStiK Data 4 martie 2009 15:40:11
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#define DIM 105
using namespace std;
struct triplu {int a,b,c,sm;} t[DIM*DIM*DIM];
int n,s,u;
int a[DIM];
void read ()
{
    int i;
    scanf ("%d%d",&n,&s);   
    for (i=1; i<=n; ++i)
        scanf ("%d",&a[i]); 
}
void atrib ()
{
    int i,j,k;
    for (i=1; i<=n; ++i)
        for (j=i; j<=n; ++j)
            for (k=j; k<=n; ++k)
            {
                t[++u].a=a[i];
                t[u].b=a[j];
                t[u].c=a[k];
                t[u].sm=a[i]+a[j]+a[k];
            }
}
int cmp (triplu a,triplu b)
{
    return a.sm<b.sm;
}
void print (int i,int j)
{
    printf("%d %d %d %d %d %d",t[i].a,t[i].b,t[i].c,t[j].a,t[j].b,t[j].c);
    exit (0);
}
void solve ()
{
	int st=1,dr=u;
    while (st<=dr)
    {
        if (t[st].sm+t[dr].sm==s)
            print (st,dr);
        while (t[st].sm+t[dr].sm>s)
              --dr;
        if (t[st].sm+t[dr].sm==s)
            print (st,dr);
        ++st;
    }
    printf ("-1");
}
int main ()
{
    freopen ("loto.in","r",stdin);
    freopen ("loto.out","w",stdout);
    read ();
    atrib ();
    sort (t+1,t+u+1,cmp);
    solve ();
    return 0;
}