#include #define REP(i,n) for(int i=0; i<(n); i++) using namespace std; struct cww{cww(){ios::sync_with_stdio(false);cin.tie(0);}}star; string reverse( string S ) { reverse( S.begin(), S.end() ); string res; REP( i, (int)S.size() ) { res += S[i]=='(' ? ')' : '('; } return res; } int main() { int N, K; string S; cin >> N >> K >> S; // K番目が ) 閉じ括弧の場合は flag を持って進む bool flag = S[K-1] != ')' ? true : false; if( flag ) { S = reverse(S);// 括弧列反転 K = (int)S.size() - ( K - 1 );//<--K番目のposも反転!!!!!!!!!!!!!! } stack st; int res{}; REP( i, (int)S.size() ) { if( S[i] == '(' ) { st.emplace( i + 1 );//stackに積んでいく continue; } if( i + 1 == K )//K番目が来たらstackのtopを保存する { res = st.top(); break; } st.pop();//要素削除 } //flagを持っている場合は反転させたposを元に戻して出力 cout << ( flag ? (int)S.size() - res + 1 : res ) << endl; return 0; }