// ので、n回のいずれかで構成されてもよい得ることができる逆配列であってもよい の#include <iostreamの> する#include < ストリング > の#include <ベクトル> 使用して 名前空間STDを; typedefの対 < INT、INT > PII; INT N、K、 文字列S; 文字列 get_str(INT N-、int型 K){ // 最初の構築K-1の前に 文字列 RES = "" ; のための(INT I = 0 ; I < - K- 1。 ; I ++ ){ RES + = "(" ; RES + = " )" ; } int型のlen = N- res.size() のために(INT iが= 0 ; I <LEN / 2 ; I ++ ) RES + = " (" ; // 构建最后一个 用(INTは私= 0 ; I <LEN / 2 ; I ++ ) RES + = " )" ; 戻りRESを; } ボイド solve_swap(INTX、int型のY){ ながら(X < Y){ スワップ(S [X]、[Y]は秒)。 X ++、y-- 。 } } ボイド解く(){ CIN >> N >> K。 cinを >> 秒; ベクトル <PII> 解像度。 ストリング final_str = get_str(N、K)。 以下のために(INT iが= 0 ; N I <; I ++ ){ もし、(S [I]は、=!{final_str [i])と するための(INT J = I + 1、J <nであり、j ++ ){ もし(S [J] == final_str [I]){ solve_swap(i、j)は、 res.push_back({I + 1、J + 1 })。 休憩; } } } } COUT << res.size()<< ENDL。 以下のために(INT iが= 0 ; I <res.size(); I ++ ) COUT << RES [i]が1次回<< " " << RES [i]は.second << ENDL。 } int型のmain(){ int型、T。 CIN >>トン; 一方、(t-- ))(解きます。 リターン 0 ; }