fork download
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <vector>
  5. #include <algorithm>
  6. #include <utility>
  7. #include <map>
  8. #include <queue>
  9. #include <set>
  10. #include <string>
  11. #include <cstring>
  12. #include <cassert>
  13. #define rf freopen("in.in", "r", stdin)
  14. #define wf freopen("out.out", "w", stdout)
  15. #define rep(i, s, n) for(int i=int(s); i<=int(n); ++i)
  16. using namespace std;
  17. const int mx = 1e5+10, mod = 1e9+7;
  18. #define ff first
  19. #define ss second
  20.  
  21. int n, t, k;
  22. vector< pair<int, int> > r;
  23. char ans[2111];
  24.  
  25. int cmp(pair<int, int> l, pair<int, int> r)
  26. {
  27. return l.ss-l.ff+1 < r.ss-r.ff+1;
  28. }
  29.  
  30. int main()
  31. {
  32. //rf;// wf;
  33.  
  34. scanf("%d", &t);
  35. while(t--)
  36. {
  37. memset(ans, 0, sizeof ans); r.clear();
  38.  
  39. scanf("%d %d", &n, &k);
  40. rep(i, 1, k)
  41. {
  42. int x, y;
  43. scanf("%d %d", &x, &y);
  44. r.push_back( make_pair(x, y) );
  45. }
  46.  
  47. rep(i, 1, r.size()-1)
  48. {
  49. rep(j, 0, i-1)
  50. {
  51. if(r[j].ff >= r[i].ff and r[j].ff <= r[i].ss and r[j].ss >= r[i].ss)
  52. {
  53. r.push_back(make_pair(r[i].ff, r[j].ff-1));
  54. r.push_back(make_pair(r[j].ff, r[i].ss));
  55. r.push_back(make_pair(r[i].ss+1, r[j].ss));
  56.  
  57. r.erase(r.begin()+i); r.erase(r.begin()+j);
  58. i-=2;
  59. }
  60. else if(r[i].ff >= r[j].ff and r[i].ff <= r[j].ss and r[i].ss >= r[j].ss)
  61. {
  62. r.push_back(make_pair(r[j].ff, r[i].ff-1));
  63. r.push_back(make_pair(r[i].ff, r[j].ss));
  64. r.push_back(make_pair(r[j].ss+1, r[i].ss));
  65.  
  66. r.erase(r.begin()+i); r.erase(r.begin()+j);
  67. i-=2;
  68. }
  69. }
  70. }
  71. sort(r.begin(), r.end(), cmp);
  72.  
  73. rep(i, 0, r.size()-1)
  74. {
  75. int cnt = 0;
  76. rep(j, r[i].ff, r[i].ss)
  77. if(ans[j] == '\0')
  78. cnt++;
  79.  
  80. for(int j=r[i].ff, chk=0; j<=r[i].ss; ++j)
  81. {
  82. if(ans[j] == '\0' and chk < cnt/2)
  83. ans[j] = '(', chk++;
  84. else if(ans[j] == '\0' and chk >= cnt/2)
  85. ans[j] = ')';
  86. }
  87. }
  88.  
  89. rep(i, 0, n-1)
  90. if(ans[i] == '\0')
  91. ans[i] = '(';
  92. puts(ans);
  93. }
  94. return 0;
  95. }
  96.  
Success #stdin #stdout 0s 3420KB
stdin
1
8 2
1 6
0 7
stdout
(((())))