Cod sursa(job #139004)

Utilizator toni2007Pripoae Teodor Anton toni2007 Data 19 februarie 2008 16:55:17
Problema Loto Scor 25
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#define N 1000005
using namespace std;

int n,s,i,j,k,ss,a[103],s3[N];
int v1[N],v2[N],v3[N];

int compara(const void *a, const void *b){
    return s3[*(int*)a]-s3[*(int*)b];
}

int function(int a,int b){
    return s3[a]<s3[b];
}

int main(){
	int w[N];
    freopen("loto.in","r",stdin);
    freopen("loto.out","w",stdout);
    scanf("%d %d",&n,&s);
    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++){
				++ss;
				w[ss]=ss;
				s3[ss]=a[i]+a[j]+a[k];
				v1[ss]=i;
				v2[ss]=j;
				v3[ss]=k;
			}
    sort(w+1,w+ss,function);
    j=ss;
    for (i=1;i<=ss;i++){
        while (s3[w[i]]+s3[w[j]]>s && j>0)j--;
        if (!j>0)
			break;
        if (s3[w[i]]+s3[w[j]]==s){
           printf("%d %d %d ",a[v1[w[i]]],a[v2[w[i]]],a[v3[w[i]]]);
           printf("%d %d %d\n",a[v1[w[j]]],a[v2[w[j]]],a[v3[w[j]]]);
           return 0;
        }
    }
    printf("-1\n");
	return 0;
}