70Pts求hack
查看原帖
70Pts求hack
1025329
_psycho楼主2024/10/8 16:14
#include <bits/stdc++.h>

using namespace std;

string s;
pair<int, int>stk[100005];
int top;

signed main () {
	cin >> s;
	int len = s.size();
	s = " " + s;
	int ans = 1;
	int l = 1, r = 1;
	for (int i = 1; i <= len; i ++ ) {
//		cout << stk[top].first << " " << stk[top].second << "\n";
		if (s[i] == '(') 
			stk[++ top] = make_pair(1, i);
		else if (s[i] == '[')
			stk[++ top] = make_pair(2, i);
		else if(s[i] == '{')
			stk[++ top] = make_pair(3, i);
		else if (s[i] == ')') {
			if (stk[top].first == 1) {
				if (stk[top].second == r + 1){
					r = i;
					ans = r - l + 1;
					
				}
				else if (i - stk[top].second + 1 > ans) {
					ans = i - stk[top].second + 1;
					l = stk[top].second;
					r = i;
				} 
				top --;
			}else {
				top = 0;
			}
		} else if (s[i] == ']') {
			if (stk[top].first == 2) {
				if (stk[top].second == r + 1){
					r = i;
					ans = r - l + 1;
					
				}
				else if (i - stk[top].second + 1 > ans) {
					ans = i - stk[top].second + 1;
					l = stk[top].second;
					r = i;
					
				}  
				top --;	
			}else {
				top = 0;
			}
		} else if (stk[top].first == 3) {
			if (stk[top].second == r + 1){
				r = i;
				ans = r - l + 1;
				
			}
			else if (i - stk[top].second + 1 > ans) {
				ans = i - stk[top].second + 1;
				l = stk[top].second;
				r = i;
				
			}  top --;
		}else {
			top = 0;
		}
	}
	for (int i = l; i <= r; i ++)cout << s[i];
	return 0;
}
2024/10/8 16:14
加载中...