Cod sursa(job #44180)

Utilizator Bluedrop_demonPandia Gheorghe Bluedrop_demon Data 30 martie 2007 22:33:40
Problema Loto Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 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()
{
    short 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 );
    
    long sum;
    freopen( "loto.out", "wt", stdout );
    
    short k = 1;
    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 )
                 {
                      sum = 0;
                      for( i=1; i<=k; i++ ) sum += N[s[i]];
                      if( sum == suma ) 
                      {
                          for( i=1; i<=k; i++ )
                               printf( "%ld ", N[s[i]] );
                          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;
}