Advertisement
Guest User

Untitled

a guest
Sep 20th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.42 KB | None | 0 0
  1. #include <string>
  2. #include <iostream>
  3. #include <cstdlib>
  4. #include <algorithm>
  5. #include <deque>
  6. using namespace std;
  7.  
  8. int ad=0,sb=0,add[250],sub[250];
  9. bool func(int x, int y) {return (x>y);}
  10.  
  11. void fill(string vl, int zn[])
  12. {
  13. int prs=0,zg=1, ezz;
  14. bool ezg=false;
  15.  
  16. for (int i=0; i<vl.length(); i++)
  17. {
  18. if (vl[i] == '?')
  19. {
  20. prs++;
  21. }
  22. if (vl[i] == '+' || vl[i] == '-' || i==vl.length()-1)
  23. {
  24. if (ezg)
  25. {
  26. if (ezz=1)
  27. {
  28. add[ad]=prs;
  29. prs=0;
  30. ad++;
  31. }
  32. else if (ezz=2)
  33. {
  34. sub[sb]=prs;
  35. prs=0;
  36. sb++;
  37. }
  38. ezg=false;
  39. }
  40. else
  41. {
  42. if (zn[zg]==1)
  43. {
  44. add[ad]=prs;
  45. prs=0;
  46. ad++;
  47. }
  48. else if(zn[zg]==2)
  49. {
  50. sub[sb]=prs;
  51. prs=0;
  52. sb++;
  53. }
  54. }
  55.  
  56. if (vl[i] == '+')
  57. {
  58. if (zg>1)
  59. {
  60. if (zn[zg-1]==1)
  61. {
  62. zn[zg]=1;
  63. }
  64. else if (zn[zg-1]==2)
  65. {
  66. zn[zg]=2;
  67. }
  68. }
  69. else
  70. zn[zg]=1;
  71. }
  72. else if (vl[i] == '-')
  73. {
  74. if (zg>1)
  75. {
  76. if (zn[zg-1]==1)
  77. {
  78. zn[zg]=2;
  79. }
  80. else if (zn[zg-1]==2)
  81. {
  82. zn[zg]=1;
  83. }
  84. }
  85. else
  86. zn[zg]=2;
  87. }
  88. }
  89. if (vl[i] == '(')
  90. {
  91. zg++;
  92. zn[zg]=zn[zg-1];
  93. }
  94. if (vl[i] == ')')
  95. {
  96. if (vl[i-1] != ')')
  97. ezz=zn[zg];
  98. zg--;
  99. ezg=true;
  100. }
  101. }
  102. }
  103.  
  104. int main()
  105. {
  106. string vl, br;
  107. char ch[10];
  108. long int res=0,tmp=0;
  109. int ifr=0,ibk=1,zn[250],i,j,x,naj=0;
  110. deque<int> broj;
  111.  
  112. cin >> vl >> br;
  113.  
  114. for (i=0; i<br.length();i++)
  115. {
  116. ch[0]=br[i];
  117. x=atoi(ch);
  118. broj.push_back(x);
  119. }
  120.  
  121. sort(broj.begin(),broj.end());
  122. for (i=0; i<250;i++)
  123. {
  124. zn[i]=1;
  125. }
  126. fill(vl,zn);
  127.  
  128. int cya[250], cys[250],mxs=0,mxa=0, adv[250],sbv[250];
  129. memset(cya,0,sizeof(cya));
  130. memset(cys,0,sizeof(cys));
  131. memset(adv,0,sizeof(adv));
  132. memset(sbv,0,sizeof(sbv));
  133. sort(add,add+ad);
  134. sort(sub,sub+sb,func);
  135. for (i=0; i<ad; i++)
  136. {
  137. if (add[i]>mxa) mxa=add[i];
  138. for (j=1; j<=add[i]; j++)
  139. cya[j]++;
  140. }
  141. for (i=0; i<sb; i++)
  142. {
  143. if (sub[i]>mxs) mxs=sub[i];
  144. for (j=1; j<=sub[i]; j++)
  145. cys[j]++;
  146. }
  147. for (i=mxs; i>0; i--)
  148. {
  149. for (j=0; j<cys[i]; j++)
  150. {
  151. // if (broj.back()==0)
  152. // broj.pop_back();
  153. // else
  154. {
  155. sbv[i]+=broj.front();
  156. broj.pop_front();
  157. }
  158. }
  159. for (j=2; j<=i; j++)
  160. sbv[i]*=10;
  161. res-=sbv[i];
  162. }
  163. sort(broj.begin(),broj.end());
  164. for (i=1; i<=mxa; i++)
  165. {
  166. for (j=0; j<cya[i]; j++)
  167. {
  168. adv[i]+=broj.front();
  169. broj.pop_front();
  170. }
  171. for (j=2; j<=i; j++)
  172. adv[i]*=10;
  173. res+=adv[i];
  174. }
  175. cout << res << endl;
  176. return 0;
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement