#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define SIZEOF(a) (sizeof(a)/sizeof(a[0])) #define FILL(a, b) fill (a,a+SIZEOF(a),b) #define FOR(a,b,c) for(int a=b; a<=c; a++) #define FORARR(i,a) for(usigned i=0; i 0, nenula -> 1 op("DUP"); op("MUL"); FOR(i,0,20) { num(1); op("ADD"); num(2); op("DIV"); } // 1 <-> 0 num(1); op("SWP"); op("SUB"); // na zasobniku je (od vrcholu): // 1 iff V == input, jinak 0 // sum*offset + V // sum += output num(output); op("MUL"); // na zasobniku je (od vrcholu): // output, nebo 0 // sum*offset + V num(offset); op("MUL"); op("ADD"); } int main(void) { int N; while (scanf("%d", &N) == 1 && N > 0) { // TODO: init FOR(i,0,N-1) { int in, out; scanf("%d %d", &in, &out); gen(in, out); } // TODO: cleanup num(offset); op("DIV"); op("END"); printf("\n"); } return 0; }