QOJ.ac
QOJ
ID | 提交记录ID | 题目 | Hacker | Owner | 结果 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|
#485 | #277422 | #7894. Many Many Heads | SSH | SSH | Failed. | 2023-12-06 19:01:13 | 2023-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 Heads | SSH | AC ✓ | 11ms | 3868kb | C++20 | 1009b | 2023-12-06 18:47:16 | 2023-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";
}