Cod sursa(job #941995)

Utilizator superman_01Avramescu Cristian superman_01 Data 20 aprilie 2013 13:50:48
Problema Loto Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.41 kb
#include<cstdio>
#include<algorithm>

#define NMAX 105

FILE *f=fopen("loto.in","r");
FILE *g=fopen("loto.out","w");

using namespace std;

struct loto
{
    int first_elem,second_elem,third_elem;
    int sum;
    loto()
    {
        first_elem=second_elem=third_elem=0;
        sum=0;
    }
};

loto a[1000001];

int v[NMAX],n,S;

void Read( void )
{
    fscanf(f,"%d%d",&n,&S);
    for(int i(1) ; i <= n ; ++i )
        fscanf(f,"%d",&v[i]);
    fclose(f);
}
bool cmp ( loto a, loto b)
{
    return a.sum<b.sum;
}

void Solve_Write ( void )
{
    bool ok=false;
    int numb(0);
    for(int i(1) ; i <= n ; ++i )
        for(int ii(i) ; ii <= n ; ++ii )
           for(int iii(ii) ; iii <= n ; ++iii )
    {
        a[++numb].sum=v[i]+v[ii]+v[iii];
        a[numb].first_elem=v[i];
        a[numb].second_elem=v[ii];
        a[numb].third_elem=v[iii];
    }
    sort(a+1,a+numb+1,cmp);
   for(int i(1) ; i<= numb ;)
   {
       int dif=S-a[i].sum;
       while ( a[numb].sum > dif )
        --numb;
       if( a[numb].sum == dif )
       {
           ok=true;
        fprintf(g,"%d %d %d %d %d %d" ,a[i].first_elem, a[i].second_elem,a[i].third_elem,a[numb].first_elem,a[numb].second_elem,a[numb].third_elem  );
        break;
       }
       ++i;
   }

if( ok == false)
    fprintf(g,"-1");


}

int main ( void )
{
    Read();
    Solve_Write();
    return 0;
}