-
Notifications
You must be signed in to change notification settings - Fork 184
/
Copy pathb.cc
42 lines (40 loc) · 998 Bytes
/
b.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// https://codeforces.com/contest/1305/problem/B
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ii = tuple<int, int>;
using vi = vector<ll>;
using vii = vector<ii>;
using vvi = vector<vi>;
using si = set<ll>;
int main() {
cin.tie(0), ios::sync_with_stdio(0);
string s;
cin >> s;
int n = s.size();
vi c(n);
vvi r;
while (1) {
int i = 0, j = n-1;
vi a;
while (i < j) {
if (c[i] && c[j]) i++, j--;
else if (c[i]) i++;
else if (c[j]) j--;
else if (s[i] == '(' && s[j] == ')')
c[i] = 1, c[j] = 1, a.push_back(i+1), a.push_back(j+1), i++, j--;
else if (s[i] == '(') j--;
else if (s[j] == ')') i++;
else i++, j--;
}
if (!a.size()) break;
sort(a.begin(), a.end());
r.push_back(a);
}
cout << r.size() << '\n';
for (int i = 0; i < r.size(); i++) {
cout << r[i].size() << '\n';
for (int j = 0; j < r[i].size(); j++)
cout << r[i][j] << " \n"[j == r[i].size()-1];
}
}