Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <sstream>
  5. using namespace std;
  6.  
  7. int main(){
  8. long long n, ipt, tmp;
  9. string str, tran;
  10. stringstream ss;
  11.  
  12. getline(cin, str);
  13. for(auto &i:str)
  14. if(i == ',') i = ' ';
  15. ss.clear();
  16. ss << str;
  17. ss >> n >> ipt;
  18. vector<long long> v(n, ipt);
  19. vector<long long> vec;
  20.  
  21. getline(cin, str);
  22. for(int i=0;i<str.size();i++){
  23. // -1 swap ; -2 give ; -3 amount ; -4 add
  24. if(str[i] == ']'){
  25. tran += " ";
  26. while(str[i] != ','){
  27. i++;
  28. if(i == str.size()) break;
  29. }
  30. }
  31. else if(isdigit(str[i])) tran += str[i];
  32. else if(str[i] == '<'){
  33. tran += " -1 ";
  34. while(str[i] != '>')
  35. i++;
  36. }
  37. else if(str[i] == '-'){
  38. tran += " -2 ";
  39. while(str[i] != '>')
  40. i++;
  41. }
  42. else if(str[i] == ',') tran += " -3 ";
  43. else if(str[i] == '^') tran += " -4 ";
  44. else if(str[i] == '[') tran += " ";
  45. }
  46. ss.clear();
  47. ss << tran;
  48. while(ss >> tmp)
  49. vec.emplace_back(tmp);
  50.  
  51. for(int i=0;i<vec.size();){
  52. if(vec[i+1] == -1){
  53. swap(v[vec[i]], v[vec[i+2]]);
  54. i += 3;
  55. }
  56. else if(vec[i+1] == -2){
  57. if(vec[i+3] == -3){
  58. tmp = min(v[vec[i]], vec[i+4]);
  59. v[vec[i]] -= tmp;
  60. v[vec[i+2]] += tmp;
  61. i += 5;
  62. }
  63. else{
  64. tmp = v[vec[i]]/2;
  65. v[vec[i]] -= tmp;
  66. v[vec[i+2]] += tmp;
  67. i += 3;
  68. }
  69. }
  70. else if(vec[i+1] == -4){
  71. v[vec[i]] += vec[i+2];
  72. i += 3;
  73. }
  74. }
  75. auto it = v.begin();
  76. for( auto i : v)
  77. cout<<i<<",\n"[++it == v.end()];
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement