#include #include int count=1 ; int n_coppie, in[20], out[20] ; #define nop 0 #define add 1 #define div 2 #define dup 3 #define mul 4 #define sub 5 int program[50], prog_ok[50] ; int min_ok_len ; int stack[100] ; int n_obj ; /* sullo stack */ int min_ok_len ; int prog_len() { int l = 0 ; while ( program[l]!=nop && l<10 ) { l++ ; } return l ; } int run() { int a ; for(a=0;a<10;a++) { int instr = program[a] ; if ( instr==dup ) { if ( n_obj < 1 ) return -1 ; stack[n_obj] = stack[n_obj-1] ; n_obj++ ; continue ; } if ( instr!=nop && n_obj<2 ) return -1 ; switch ( program[a] ) { case nop: return 0 ; case add: stack[n_obj-2] += stack[n_obj-1] ; break ; case div: if ( stack[n_obj-1]==0 ) return -1 ; stack[n_obj-2] /= stack[n_obj-1] ; break ; case mul: stack[n_obj-2] *= stack[n_obj-1] ; break ; case sub: stack[n_obj-2] -= stack[n_obj-1] ; break ; } n_obj-- ; if ( stack[n_obj-1] < -30000 || stack[n_obj-1] > 30000 ) return -1 ; } return 0 ; } int test_this() { int a, i, rv ; for( a=0 ; a