fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define S(x) scanf("%d",&x)
  4. #define P(x) printf("%d",x)
  5. #define fl(i , a, b) for(i = a; i<b; i++)
  6. #define all(c) c.begin(), c.end()
  7. #define MOD 1000000007
  8. #define MAX 1000000010
  9. #define ll long long
  10. #define mp make_pair
  11. #define pb push_back
  12. typedef pair<int,int> pp;
  13. typedef pair<ll,ll> ppl;
  14. std::vector<string> v;
  15. std::map<string, int> m;
  16. int check(string ch){
  17. int n = ch.size(); int i , o =0 , c=0;
  18. fl(i , 0 , n)
  19. {
  20. if(ch[i]=='(')
  21. o++;
  22. else if(ch[i]==')') c++;
  23. if(c>o)
  24. return 0;
  25. }
  26. if(c!=o) return 0;
  27. return 1;
  28. }
  29. int main()
  30. {
  31. int n , t, k ,i ;
  32. string s , tmp1, tmp2 , final;
  33. cin>>t;
  34. while(t--)
  35. {
  36. cin>>s;cin>>k;
  37. n = s.size();
  38. if(n%2==1){
  39. if(k>1) printf("-1\n");
  40. else cout<<s<<endl;
  41. }
  42. else if(check(s)==0){ // means irregular hai .
  43. if(k>1) printf("-1\n");
  44. else cout<<s<<endl;
  45. }
  46. else if(k>n) printf("-1\n");
  47. else{
  48. m.clear();
  49. fl( i , 0 , n){
  50. if(s[i]=='(') s[i] = 'a';
  51. else s[i] = 'b';
  52. }
  53. tmp1 = ""; tmp2 = "" ; final = "";
  54. tmp2+=s;
  55. fl(i , 0 , n)
  56. {
  57. if(tmp2.size()!=0)
  58. tmp2.erase(tmp2.begin());
  59. final = "";
  60. final+=tmp1; final+=tmp2;
  61. if(m.count(final)==0 && final.size()==n-1)
  62. {
  63. m[final] = 1;
  64. }
  65. tmp1+=s[i];
  66. }
  67. map<string, int>::const_iterator it;
  68. if(k>m.size()) printf("-1\n");
  69. else{
  70. string ans = ""; int cnt=0 ;
  71. for(it = m.begin(); it!=m.end();it++)
  72. {
  73. cnt++;
  74. ans = it->first;
  75. if(cnt==k)
  76. break;
  77. }
  78. int n3= ans.size();
  79. fl( i , 0 , n3) {
  80. if(ans[i]=='a') ans[i] = '(';
  81. else ans[i] = ')';
  82. }
  83. cout<<ans<<endl;
  84. }
  85. }
  86. }
  87. return 0;
  88. }
Success #stdin #stdout 0s 2828KB
stdin
5
()
2
(()
1
(()
2
(())
2
(())
3
stdout
)
(()
-1
())
-1