O(tn)
http://codedoc.tistory.com/779와 유사하다.
#include<cstdio> int t, n, a[1001], bi[1001]; void f(int al, int ar, int bl, int br) { if (al > ar) return; int m = bi[a[al]]; f(al + 1, al + m - bl, bl, m - 1); f(al + m - bl + 1, ar, m + 1, br); printf("%d ", a[al]); } int main() { for (scanf("%d", &t); t--;) { scanf("%d", &n); for (int i = 1; i <= n; i++) scanf("%d", a + i); for (int i = 1, x; i <= n; i++) scanf("%d", &x), bi[x] = i; f(1, n, 1, n); puts(""); } return 0; }
((헉ㄱ 뭔가 모르는거 검색할때마다 이블로그 나와요..! (왠지 대단..! 존경합니다..!) ))
답글삭제