Cod sursa(job #136614)

Utilizator igorPirnau Igor igor Data 15 februarie 2008 18:22:48
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<fstream.h>
using namespace std;

#define smax 1000100
#define nmax 200

ifstream f("loto.in");
ofstream g("loto.out");

int s[smax], a[nmax], n, i, nr, j, k, st, dr, mij, ok;
long S;
 
void suma(int x)
{
    int i, j, k;
    for(i=1; i<=n; i++)
        for(j=i; j<=n; j++)
            for(k=j; k<=n; k++)
                if(a[i]+a[j]+a[k]==x) 
                {
                    g<<a[i]<<' '<<a[j]<<' '<<a[k]<<' ';
                    return;
                }
}
    
int main()
{
    f>>n>>S;
    for(i=1; i<=n; i++) f>>a[i];
    f.close();

    nr=0;
    for(i=1; i<=n; i++) 
        for(j=i; j<=n; j++) 
            for(k=j; k<=n; k++) 
                s[++nr]=a[i]+a[j]+a[k];

    sort( s+1, s+nr+1 );
    
    ok=0; st=1; dr=nr;
    for(st=1; st<=dr && !ok ; st++){
        while( s[st]+s[dr]>S && dr>0 ) dr--;
        if( s[st] + s[dr] == S ) ok=1;    
    }
   
    st--;
    if(ok){
        suma(s[st]);
        suma(s[dr]);
    }
        else g<<"-1";

    g.close();
    return 0;
}