Cod sursa(job #164235)

Utilizator andreisfrentSfrent Andrei andreisfrent Data 23 martie 2008 19:27:26
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.46 kb
#include <stdio.h>   
#include <stdlib.h>   
#include <algorithm>   
  
#define N 101   
  
using namespace std;   
  
long sol[N * N * N];   
long v[N];   
long n, s;   
  
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","r",stdin);   
    freopen("loto.out","w",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];   
            }   
        }   
    }   
    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");   
	fclose(stdout);
    return 0;   
}