记录编号 107794 评测结果 AAAAA
题目名称 [Tyvj Aug11] 括号匹配 最终得分 100
用户昵称 Gravatarraywzy 是否通过 通过
代码语言 C++ 运行时间 1.026 s
提交时间 2014-06-29 20:29:41 内存使用 95.68 MiB
显示代码纯文本
  1. #include<fstream>
  2. #include<string>
  3. #include<cstring>
  4. using namespace std;
  5. ifstream fin("kakko.in");
  6. ofstream fout("kakko.out");
  7. char Stack[20000001];
  8. int T[20000001];
  9. int ZZ=0,N;
  10. void push(char a)
  11. {
  12. ZZ++;
  13. Stack[ZZ]=a;
  14. }
  15. void pop()
  16. {
  17. ZZ--;
  18. }
  19. bool flag=0;
  20. int main()
  21. {
  22. string A;
  23. fin>>N;
  24. int i,j,L,k;
  25. int MAX=0;
  26. for(i=1;i<=N;i++)
  27. {
  28. fin>>A;
  29. L=A.length();
  30. for(j=0;j<=L-1;j++)
  31. {
  32. if(A[j]=='('||A[j]=='['||A[j]=='{'||A[j]=='<')
  33. {
  34. push(A[j]);
  35. if(ZZ>MAX)
  36. MAX=ZZ;
  37. if(ZZ==MAX)
  38. T[MAX]++;
  39. }
  40. if(A[j]==')')
  41. {
  42. if(Stack[ZZ]!='('&&Stack[ZZ]!='L')
  43. {
  44. fout<<"FALSE"<<endl;
  45. flag=1;
  46. break;
  47. }
  48. else
  49. pop();
  50. }
  51. if(A[j]=='>')
  52. {
  53. if(Stack[ZZ]!='<'&&Stack[ZZ]!='L')
  54. {
  55. fout<<"FALSE"<<endl;
  56. flag=1;
  57. break;
  58. }
  59. else
  60. pop();
  61. }
  62. if(A[j]==']')
  63. {
  64. if(Stack[ZZ]!='['&&Stack[ZZ]!='L')
  65. {
  66. fout<<"FALSE"<<endl;
  67. flag=1;
  68. break;
  69. }
  70. else
  71. pop();
  72. }
  73. if(A[j]=='}')
  74. {
  75. if(Stack[ZZ]!='{'&&Stack[ZZ]!='L')
  76. {
  77. fout<<"FALSE"<<endl;
  78. flag=1;
  79. break;
  80. }
  81. else
  82. pop();
  83. }
  84. if(A[j]=='/')
  85. {
  86. push('L');if(ZZ>MAX) {MAX=ZZ;T[MAX]++;}
  87. }
  88. if(A[j]=='#')
  89. {for(k=1;k<=2;k++) push('L');if(ZZ>MAX) {MAX=ZZ;T[MAX]++;}}
  90. if(A[j]=='@')
  91. {for(k=1;k<=4;k++) push('L');if(ZZ>MAX) {MAX=ZZ;T[MAX]++;}}
  92. if(A[j]=='?')
  93. {for(k=1;k<=8;k++) push('L');if(ZZ>MAX) {MAX=ZZ;T[MAX]++;}}
  94. if(A[j]=='\\')
  95. {pop();}
  96. if(A[j]=='*')
  97. {for(k=1;k<=2;k++)pop();}
  98. if(A[j]=='&')
  99. {for(k=1;k<=4;k++) pop();}
  100. if(A[j]=='!')
  101. {for(k=1;k<=8;k++) pop();}
  102. }
  103. if(flag==0)
  104. {
  105. if(ZZ==0)
  106. fout<<"TRUE"<<' '<<MAX<<' '<<T[MAX]<<endl;
  107. else
  108. fout<<"FALSE"<<endl;
  109. }
  110. ZZ=0;//栈清空
  111. flag=0;
  112. MAX=0;
  113. memset(T,0,sizeof(T));
  114. }
  115. return 0;
  116. }