0分
查看原帖
0分
519169
lbrsygdsb123楼主2022/2/16 22:23
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int cur = 0, z[100005], x[100005], h[100005], pos[100005];
char c, p[100005];
void srh(int l1, int r1, int l2, int r2, int l3, int r3){
	if(l1 == r1)
		return;
	int rt = x[l1], ps = pos[x[l1]];
	int d = ps - l2;
	h[r3 - 1] = rt;
	srh(l1 + 1, l1 + d + 1, l2, ps, l3, l3 + d);
	srh(l1 + d + 1, r1, ps + 1, r2, l3 + d, r3 - 1);
}
int main(){
	int i = 0;
	while((c = getchar()) != '\n'){
		i ++;
		p[++cur] = c;
		z[i] = cur;
		pos[cur] = i;
		//cout << z[i] << endl;
	}
	i = 0;
	while((c = getchar()) != '\n'){
		i ++;
		for(int j = 1;j <= 26;j ++)
			if(p[j] == c)
				x[i] = j;
		//cout << i << ' ' << c << endl;
	}
	//for(int j = 1;j < i;j ++)
		//cout << z[j] << ' ' << x[j] << endl;
	srh(1, cur + 1, 1, cur + 1, 1, cur + 1);
	for(int j = 1;j <= cur;j ++)
		cout << p[h[j]];
	
	
	return 0;
}
2022/2/16 22:23
加载中...