Cod sursa(job #135279)

Utilizator marius135Dumitran Adrian Marius marius135 Data 13 februarie 2008 14:03:52
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include<stdio.h>   
#include<stdlib.h>   
#include<algorithm>


using namespace std;

#define maxn 101   
  
  
long sol[maxn*maxn*maxn];   
long v[maxn];   
long n,s;   
  
int sort(const void *a,const void *b)   
{   
    return *(long *) a- *(long *)b;   
}   
  
void afisare(long a)   
{   
    long i,j,l;   
    for(i=1;i<=n;i++)   
        for(j=1;j<=n;j++)   
            for(l=1;l<=n;l++)   
                if(v[i]+v[j]+v[l]==sol[a]) {printf("%ld %ld %ld",v[i],v[j],v[l]);return ;}   
       
}   
  
int main()   
{   
       
    freopen("loto.in","rt",stdin);   
    freopen("loto.out","wt",stdout);   
       
    long i,j,l,t;   
       
    scanf("%ld%ld",&n,&s);   
    for(i=1;i<=n;i++)   
        scanf("%ld",&v[i]);   
    long nr=0;   
       
    for(i=1;i<=n;i++)   
        for(j=1;j<=n;j++)   
            for(l=1;l<=n;l++)   
                {   
                sol[nr++]=v[i]+v[j]+v[l];   
                }   
//    qsort(sol,nr,sizeof(sol[0]),sort);   
    sort(sol,sol+nr);
    t=nr-1;   
    for(i=0;i<nr && t>=0 ;i++)   
        {   
        while(sol[i]+sol[t]>s  && t>=0) t--;   
        if(t<0) break;   
        if(sol[i]+sol[t]==s) {afisare(i);printf(" ");afisare(t);printf("\n");return 0;}   
        }   
    printf("-1\n");    
  
       
    return 0;   
}