参考做法

bobby285271 发表于 3年前 · 关联问题 一鸣师姐与括号序列

#include <bits/stdc++.h> using namespace std; struct item { int a, b, id; } v[10010]; bool cmp(item a, item b) { if ((a.b >= a.a) != (b.b >= b.a)) return a.b >= a.a; else return (a.b >= a.a) ? (a.a < b.a) : (a.b > b.b); } int main() { int n; cin >> n; for (int i = 0; i < n; i++) { string s; cin >> s; int l = 0, r = 0; for (auto j : s) { r += (j == ')' && !l); l += (j == '(') - (j == ')' && l); } v[i] = {r, l, i + 1}; } sort(v, v + n, cmp); int s = 0; for (int i = 0; i < n; i++) { if (s < v[i].a) return puts("NO"), 0; s += v[i].b - v[i].a; } if (s != 0) return puts("NO"), 0; puts("YES"); for (int i = 0; i < n; i++) printf("%d ", v[i].id); puts(""); }

shao 发表于 3年前

妙啊 ✧(∗≧ꇴ≦)✧