Lang:GCC
Edit1234567891011121314#define M(c) d[c-'A']char p[30],m[30],d[30],L;P(l,r){if(l>=r)return;int I,D=30,i=l-1;while(++i<r)if(M(m[i])<D)D=M(m[I=i]);P(l,I);P(I+1,r);putchar(m[I]);}main(){scanf("%s%s",p,m);for(L=0;p[L];++L)M(p[L])=L;P(0,L);return 0;}