记录编号 550221 评测结果 AAAAAAAAAA
题目名称 天天和不可描述 最终得分 100
用户昵称 Gravatar夜莺 是否通过 通过
代码语言 C++ 运行时间 0.052 s
提交时间 2020-03-05 16:57:38 内存使用 8.16 MiB
显示代码纯文本
#include<cstdio>
#include<cstring>
using namespace std;
const int MAXN=500010;
char see[MAXN];
int left[MAXN],right[MAXN],be[MAXN];
int lis;
void back(int head,int tail){
	if(head==tail)
		if(see[head]!='('){
			printf("%c",see[head]);
			return;
		}
	if(head<=tail){
		while(head<=tail){
			if(see[head]!='('){
				if(see[head]!=')')
					printf("%c",see[head]);
			}
			else{
				if(right[head]-1>=head+1){
					back(right[head]-1,head+1);
					head=right[head];
				}
			}
			head++;
		}
	}
	else{
		while(head>=tail){
			if(see[head]!=')'){
				if(see[head]!='(')
					printf("%c",see[head]);
			}
			else{
				if(left[head]+1<=head-1){
					back(left[head]+1,head-1);
					head=left[head];
				}
			}
			head--;
		}
	}
}
int main(){
	freopen("unknown.in","r",stdin);
	freopen("unknown.out","w",stdout);
	scanf("%s",see);
	int see_long=strlen(see);
	for(int i=0;i<see_long;i++){
		if(see[i]=='('){
			be[++lis]=i;
		}
		if(see[i]==')'){
			right[be[lis]]=i;
			left[i]=be[lis--];
		}
	}
	back(0,see_long-1);
	return 0;
}