QOJ.ac

QOJ

ID提交记录ID题目HackerOwner结果提交时间测评时间
#485#277422#7894. Many Many HeadsSSHSSHFailed.2023-12-06 19:01:132023-12-06 19:01:13

详细

Extra Test:

Invalid Input

input:

1
[([()])])])])])])])])])])])])])])])])])])])])])])])])]

output:


result:

FAIL Condition failed: "conv(s)" (test case 1)

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#277422#7894. Many Many HeadsSSHAC ✓11ms3868kbC++201009b2023-12-06 18:47:162023-12-06 19:13:42

answer

#include <bits/stdc++.h>
#define int long long
using namespace std;
void solve();
signed main() {
	cin.sync_with_stdio(0);
	cin.tie(0);
	int T = 1;
	cin >> T;
	while (T--) {
		solve();
	}
	return 0;
}

void solve() {
	string s;
	cin >> s;
	string s1;
	s1.resize(s.size());
	for (int i = 0; s[i]; i++) {
		if (s[i] == ')' || s[i] == '(') s1[i]='1';
		else s1[i]=0;
	}
	stack<int>st;
	int pre = -1;
	int cnt = 0;
	int pp=0;
	for (int i = 0; i < s1.size();) {
		pp=i;
		if (s1[i] == pre) {
			if (!st.size()) {
				cout << "No\n";
				return;
			}
			while (st.size() && i < s1.size()) {
				if (st.top() == s1[i]) {
					st.pop();
					i++;
				} else {
					cout << "No\n";
					return;
				}
			}
			if (st.size()) {
				cout << "No\n";
				return;
			}
			pre = s1[i - 1];
//			i++;
			cnt++;
			if (cnt > 2) {
				cout << "No\n";
				return;
			}
		} else {
			st.push(s1[i]);
			pre = s1[i];
			i++;
		}
		if(i==pp) i++;
	}
	cout << "Yes\n";
}