1e5 不一定是nlogn 也可能是o(n)
事实上如果是 1e6 o(n)会跑好久
然后题目中的限制有很大的用处 : n n 个左括号 “(” 和 n n 个右括号 “)” 组成的序列。
RE的注意下了
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN = 1e5+10;
char s[MAXN*2];
int x[MAXN],y[MAXN],m;
int main()
{
scanf("%s",s+1);
int n=strlen(s+1);
int loc=1;
for(int i=1;i<=n/2;i++)
if(s[i]==')')
{
loc=max(loc,i+1);
while(s[loc]!='(') loc++;
m++;
x[m]=i;
y[m]=loc;
s[loc]=')';
}
cout<<m<<endl;
for(int i=1;i<=m;i++)
printf("%d %d\n",x[i],y[i]);
return 0;
}