Submission #13126173
Source Code Expand
#include <bits/stdc++.h>
#define ll long long
#define fastIO cout << fixed << setprecision(12), ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
using namespace std;
const int N = 1e6 + 1;
bool taken[N];
bool cmp(pair<int, int> a, pair<int, int> b) {
if(a.second == b.second)
return a.first > b.first;
return a.second < b.second;
}
bool cmp2(pair<int, int> a, pair<int, int> b) {
if(a.first - a.second == b.first - a.second)
return a.second < b.second;
return a.first - a.second > b.first - a.second;
// if(a.second == b.second)
// return a.first > b.first;
// return a.second > b.second;
}
int main() {
fastIO;
#ifdef LOCAL
freopen("input.in", "rt", stdin);
#endif
int n;
cin >> n;
string str;
int open = 0, closed = 0;
vector<pair<int, int>> vec;
for (int i = 0; i < n; ++i) {
cin >> str;
int cnt = 0, minus = 0;
for (int i = 0; i < (int)str.size(); ++i) {
if(str[i] == '(')
++cnt;
else
--cnt;
if(cnt < 0)
++minus, cnt = 0;
}
if(minus) {
if(cnt)
vec.push_back({cnt, minus});
else
closed += abs(minus);
} else {
open += cnt;
}
}
int total = open;
sort(vec.begin(), vec.end(), cmp);
for (int i = 0; i < (int)vec.size(); ++i) {
if(vec[i].second > vec[i].first) continue;
if(total >= vec[i].second) {
total -= vec[i].second;
total += vec[i].first;
taken[i] = 1;
}
}
vector<pair<int, int>> vv;
for (int i = 0; i < (int)vec.size(); ++i) {
if(taken[i]) continue;
vv.push_back(vec[i]);
}
sort(vv.begin(), vv.end(), cmp2);
for (int i = 0; i < (int)vv.size(); ++i) {
total -= vv[i].second;
if(total < 0) {
cout << "No";
return 0;
}
total += vv[i].first;
}
total -= closed;
if(total == 0)
cout << "Yes";
else
cout << "No";
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | F - Bracket Sequencing |
| User | it_wasnt_me |
| Language | C++ (GCC 9.2.1) |
| Score | 600 |
| Code Size | 1851 Byte |
| Status | AC |
| Exec Time | 54 ms |
| Memory | 7812 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 600 / 600 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample_01, sample_02, sample_03, sample_04 |
| All | random_01, random_02, random_03, random_04, random_05, random_06, random_07, random_08, random_09, random_10, random_11, random_12, random_13, random_21, random_22, random_23, random_31, random_32, random_33, random_41, random_42, random_43, random_51, random_52, random_53, random_61, random_62, random_63, sample_01, sample_02, sample_03, sample_04 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| random_01 | AC | 34 ms | 4260 KiB |
| random_02 | AC | 54 ms | 3704 KiB |
| random_03 | AC | 38 ms | 4156 KiB |
| random_04 | AC | 53 ms | 3476 KiB |
| random_05 | AC | 51 ms | 3500 KiB |
| random_06 | AC | 30 ms | 3572 KiB |
| random_07 | AC | 12 ms | 3668 KiB |
| random_08 | AC | 14 ms | 3500 KiB |
| random_09 | AC | 11 ms | 3584 KiB |
| random_10 | AC | 27 ms | 3576 KiB |
| random_11 | AC | 2 ms | 3624 KiB |
| random_12 | AC | 3 ms | 3652 KiB |
| random_13 | AC | 2 ms | 3500 KiB |
| random_21 | AC | 2 ms | 3496 KiB |
| random_22 | AC | 2 ms | 3656 KiB |
| random_23 | AC | 2 ms | 3500 KiB |
| random_31 | AC | 2 ms | 3568 KiB |
| random_32 | AC | 2 ms | 3576 KiB |
| random_33 | AC | 2 ms | 3496 KiB |
| random_41 | AC | 2 ms | 3500 KiB |
| random_42 | AC | 2 ms | 3556 KiB |
| random_43 | AC | 2 ms | 3624 KiB |
| random_51 | AC | 2 ms | 3496 KiB |
| random_52 | AC | 2 ms | 3604 KiB |
| random_53 | AC | 2 ms | 3652 KiB |
| random_61 | AC | 31 ms | 5396 KiB |
| random_62 | AC | 38 ms | 7396 KiB |
| random_63 | AC | 48 ms | 7812 KiB |
| sample_01 | AC | 2 ms | 3496 KiB |
| sample_02 | AC | 2 ms | 3616 KiB |
| sample_03 | AC | 2 ms | 3476 KiB |
| sample_04 | AC | 2 ms | 3604 KiB |