题目传送门
用栈存储,理清入栈出栈规则。
#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
int a[N];
char s[N];
int main()
{
stack<int> st;
while(~scanf("%s",s)){
int len = strlen(s);
for(int i = 0; i < len; i ++){
if(s[i] == '(') {
st.push(i + 1);
}
else{
int t = st.top();
st.pop();
a[t] = i + 1;
}
}
for(int i = 1; i < len; i ++)
if(a[i]){
printf("%d %d\n",i,a[i]);
a[i] = 0;
}
}
}