Cod sursa(job #44183)

Utilizator Bluedrop_demonPandia Gheorghe Bluedrop_demon Data 30 martie 2007 22:38:12
Problema Loto Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
// Problema loto
// Backtracking... so help me god!!!

#include <stdio.h>
#define MAX       101
#define SOL        6

long s[SOL+1];
long N[MAX];
long suma;


int main()
{
    int n, cd, i;
    
    freopen( "loto.in", "rt", stdin );
             scanf( "%d %ld", &n, &suma );
             for( i=1; i<=n; i++ ) scanf( "%ld", &N[i] );             
    fclose( stdin );
    
    freopen( "loto.out", "wt", stdout );
    int k = 1;
    s[0] = 0;
    s[k] = 0;
    do{
         do{
             if( s[k] < n ) { s[k]++; cd =1; } else cd = 0;
         }while( ( ( !cd ) || ( k > SOL ) ) && ( cd ) );
         if( cd )
             if( k == SOL )
                 {
                      if( N[s[1]]+N[s[2]]+N[s[3]]+N[s[4]]+N[s[5]]+N[s[6]] == suma ) 
                      {
                          printf( "%ld %ld %ld %ld %ld %ld", N[s[1]],N[s[2]],N[s[3]], N[s[4]], N[s[5]], N[s[6]] );
                          printf( "\n" );
                          fclose( stdout );
                          return 0;
                      } 
                 }
                 else
                 {
                     k++;
                     s[k] = s[k-1]-1;
                 }
             else k--;
    }while( k > 0 );

    printf( "-1\n" );    
    fclose( stdout );
    return 0;
}