fork download
  1. #include <iostream>
  2. using namespace std;
  3. long n,k=0;
  4. string a,b,c,d;
  5. int el();
  6.  
  7. int iff(){
  8. int k=0;
  9. cin>>b;
  10. while(b=="S")
  11. cin>>b;
  12.  
  13. if(b=="IF")
  14. {
  15. //cout<<" {"<<b<<"(if) "; cout<<k<<" ";
  16. k=iff();
  17. }else if(b=="ELSE")
  18. { //cout<<b<<"(else) ";
  19. k++;
  20.  
  21. k+=el();
  22. //cout<<k<<" ";
  23. }
  24. return k;
  25. }
  26. int el(){
  27. int k=0;
  28. cin>>c;
  29. while(c=="S")
  30. cin>>c;
  31.  
  32. if(c=="IF")
  33. {
  34. //cout<<" {"<<c<<"(if) "; cout<<k<<" ";
  35. k+=iff();
  36. }else if(c=="END_IF")
  37. { //cout<<c<<"(end)} "; cout<<k<<" ";
  38. k++;
  39. }
  40.  
  41. return k;
  42.  
  43.  
  44. }
  45.  
  46.  
  47. int main() {
  48. cin>>n;
  49.  
  50. for(int i=0;i<n;i++){
  51.  
  52. //cout<<" || ";
  53. k=0;
  54. cin>>a;
  55. while(a=="S")
  56. cin>>a;
  57. if(a=="ENDPROGRAM")
  58. { //cout<<" ///// ";
  59. cout<<1<<"\n";
  60. continue;
  61. }
  62.  
  63. //cout<<" {"<<a<<"(if) "; cout<<k<<" ";
  64. k=iff();
  65. //cout<<" **"<<k<<"** ";
  66.  
  67. while(cin>>a){
  68. while(a=="S")
  69. cin>>a;
  70. if(a=="IF")
  71. { //cout<<" {"<<a<<"(if) "; cout<<k<<" ";
  72. k*=iff();
  73. }
  74. else if(a=="ELSE"){
  75. //cout<<a<<"(else) "; cout<<k<<" ";
  76. k+=el();
  77. }
  78. else if(a=="END_IF"){
  79. // cout<<a<<"(end)} "; cout<<k<<" ";
  80. continue;
  81. }
  82. else if(a=="ENDPROGRAM")
  83. { //cout<<" ///// ";
  84. cout<<k<<"\n";
  85. break;
  86. }else{
  87. k++;
  88. }
  89. //cout<<" **"<<k<<"** ";
  90.  
  91. }
  92. }
  93. return 0;
  94. }
  95.  
  96. /*
  97. S
  98. IF
  99. S
  100. S
  101. ELSE
  102. IF
  103. {
  104. IF{
  105. S
  106. }ELSE{
  107. S
  108. }END_IF
  109. S
  110. }ELSE
  111. {
  112. S
  113. }END_IF
  114.  
  115. END_IF
  116. S
  117. ENDPROGRAM
  118. */
  119.  
  120.  
  121.  
  122.  
Success #stdin #stdout 0.01s 5280KB
stdin
4
IF
ELSE
END_IF
ENDPROGRAM
IF
S
ELSE
END_IF
IF
ELSE
S
END_IF
ENDPROGRAM
S
S
S
ENDPROGRAM
S
IF
S
S
ELSE
IF
IF
S
ELSE
S
END_IF
S
ELSE
S
END_IF
END_IF
S
ENDPROGRAM
stdout
2
4
1
4