fork(1) download
  1. #include <stdio.h>
  2.  
  3. int main(void) {
  4. // your code goes hereint main(void) {
  5. int N;
  6. scanf("%d", &N);
  7. char k[10010];
  8. if(N%2==0)
  9. {
  10. scanf("%s", k);
  11. int i, j;
  12. for(i=0; i<N; i++)
  13. {
  14. if(k[i]=='<')
  15. k[i]=1;
  16. if(k[i]=='(')
  17. k[i]=2;
  18. if(k[i]=='[')
  19. k[i]=3;
  20.  
  21.  
  22. if(k[i]=='{')
  23. k[i]=4;
  24. if(k[i]=='>')
  25. k[i]=-1;
  26. if(k[i]==')')
  27. k[i]=-2;
  28. if(k[i]==']')
  29. k[i]=-3;
  30. if(k[i]=='}')
  31. k[i]=-4;
  32. }
  33.  
  34.  
  35.  
  36. int R, T, M=1, c=0;
  37.  
  38.  
  39. while (M!=0)
  40. {
  41. R=0;
  42. T=0;
  43. M=0;
  44.  
  45.  
  46. for(i=0; i<N; i++)
  47. {
  48.  
  49. if(k[i]==-k[i+1] && k[i]>0)
  50. {
  51. k[i]=0;
  52. k[i+1]=0;
  53. M=1;
  54. }
  55. if(k[i+1]<0 && k[i]>0)
  56. printf("malformataA");
  57. if(k[i+1]==0 && k[i]>0)
  58. {
  59. for(j=i+2; j<N; j++)
  60. {
  61.  
  62.  
  63. //if(T<0 || k[j]<0)
  64. //printf("malformataB");
  65. // if(T!=0 && k[i]==-k[j]) {
  66. // printf("malformata1");
  67. // break; }
  68.  
  69. if(k[j]!=0 && k[i]!=-k[j])
  70. break;
  71. if(k[j]!=0 && k[i]==-k[j])
  72. {
  73. k[i]=0;
  74. k[j]=0;
  75. M=1;
  76. break;
  77. }
  78. }
  79. }
  80. }
  81.  
  82. R=R+k[i];
  83. if(R<0)
  84. printf("malformata2");
  85.  
  86. }
  87. //if(M==0)
  88. // {
  89. // printf("malformata3");
  90. // return 0;
  91. //}
  92.  
  93.  
  94.  
  95. printf("corretta\n");
  96. for(i=0; i<N; i++)
  97. printf(" %d", k[i]);
  98.  
  99.  
  100. }
  101. else
  102. printf("malformata");
  103. return 0;
  104. }
  105.  
Success #stdin #stdout 0s 4280KB
stdin
10
([())(()])
stdout
corretta
 2 3 0 0 -2 2 0 0 -3 -2