fork(5) download
  1. #include<stdio.h>
  2.  
  3. int main()
  4. {
  5. long long int p, c, q, n, N, m;
  6. char tab[10009];
  7.  
  8. scanf("%lld%lld",&n,&N);
  9. p=0; c=1; q=n; m=1; tab[0]='(';
  10. while(p<n-2)
  11. ++p,
  12. c=c*2*(2*p-1)/(p+1);
  13. c=c*6*(p+1)*(2*p+1)/((p+2)*(p+3));
  14. while(m<2*n)
  15. {
  16. if(p<0)
  17. {
  18. tab[m++]=')';
  19. continue;
  20. }
  21. if(N<=c)
  22. {
  23. tab[m++]='(';
  24. --p;
  25. c=c*(p+1)*(q-p+1)/((q+p+1)*(q-p));
  26. continue;
  27. }
  28. tab[m++]=')';
  29. N-=c;
  30. --q;
  31. c=c*(q-p+1)*(q+2)/((q+p+1)*(q-p+2));
  32. if(q-p<2)
  33. {
  34. tab[m++]='(';
  35. --p;
  36. c=c*(p+1)*(q-p+1)/((q+p+1)*(q-p));
  37. }
  38. }
  39. puts(tab);
  40. return 0;
  41. }
Success #stdin #stdout 0.01s 1724KB
stdin
3 2
stdout
(()())