Advertisement
ke_timofeeva7

хуй

Sep 28th, 2022
597
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.78 KB | None | 0 0
  1. // clang-format off
  2. // #pragma GCC optimize("O3")
  3. // #pragma GCC target("avx,avx2")
  4. #include <iostream>
  5. #include <string>
  6. #include <sstream>
  7. #include <cmath>
  8. #include <memory.h>
  9. #include <algorithm>
  10. #include <stack>
  11. #include <deque>
  12. #include <iomanip>
  13. #include <stdio.h>
  14. #include <queue>
  15. #include <map>
  16. #include <set>
  17. #include <unordered_map>
  18. #include <unordered_set>
  19. #include <random>
  20. #include <ctime>
  21. #include <cstdlib>
  22. #include <cassert>
  23. #include <chrono>
  24. #include <array>
  25. #define int long long
  26. #define pii pair<int, int>
  27. #define pb push_back
  28. #define all(vc) vc.begin(), vc.end()
  29. #define fir first
  30. #define sec second
  31. #define endl "\n"
  32. #define un unsigned
  33. #define INF 1000000009
  34. #define double long double
  35. using namespace std;
  36.  
  37. const int N = 1000005, R = 1 << 20, MOD = 1e9 + 7, ABC = 26, logn = 19;
  38.  
  39. mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
  40.  
  41. int sign(int a) {
  42.     if (a > 0)
  43.         return 1;
  44.     return -1;
  45. }
  46.  
  47. signed main() {
  48.     ios_base::sync_with_stdio(false);
  49.     cin.tie(0);
  50.     cout.tie(0);
  51.     srand(time(0));
  52.  
  53.     string s;
  54.     cin >> s;
  55.  
  56.     s += '+';
  57.  
  58.     vector<int> zn(1, 0);
  59.     vector<char> hui;
  60.     int sig = 1;
  61.     if (s[0] == '-')
  62.         sig = -1;
  63.  
  64.     int k = 0;
  65.     for (int i = 0; i < s.size(); i++) {
  66.         if (s[i] >= '0' && s[i] <= '9') {
  67.             k = k * 10 + s[i] - '0';
  68.             continue;
  69.         }
  70.         if (s[i] == '-' || s[i] == '+') {
  71.             zn.push_back(sig * k);
  72.             k = 0;
  73.             if (s[i] == '-')
  74.                 sig = -1;
  75.             else
  76.                 sig = 1;
  77.             continue;
  78.         }
  79.  
  80.         char c = s[i];
  81.         i++;
  82.         zn.push_back(k*sig);
  83.         k = 0;
  84.         sig = 1;
  85.  
  86.         while (i < s.size() && s[i] != '+' && s[i] != '-') {
  87.             if (s[i] >= '0' && s[i] <= '9') {
  88.                 k = k * 10 + s[i] - '0';
  89.                 i++;
  90.                 continue;
  91.             }
  92.             if (c == '/')
  93.                 k = abs(zn.back()) * sign(zn.back()) / k * sig;
  94.             if (c == '*')
  95.                 k = abs(zn.back()) * sign(zn.back()) * k * sig;
  96.             zn.pop_back();
  97.             zn.pb(k);
  98.             k = 0;
  99.             c = s[i];
  100.             i++;
  101.         }
  102.        
  103.         if (i < s.size() && (s[i] == '+' || s[i] == '-')) {
  104.             if (c == '/')
  105.                 k = abs(zn.back()) * sign(zn.back()) / k * sig;
  106.             if (c == '*')
  107.                 k = abs(zn.back()) * sign(zn.back()) * k * sig;
  108.             zn.pop_back();
  109.             zn.pb(k);
  110.             k = 0;
  111.             c = s[i];
  112.         }
  113.         if (s[i] == '-')
  114.             sig = -1;
  115.         else
  116.             sig = 1;
  117.     }
  118.  
  119.     int ans = 0;
  120.     for (int i : zn)
  121.         ans += i;
  122.     cout << ans;
  123.     return 0;
  124. }
Advertisement
Comments
Add Comment
Please, Sign In to add comment
Advertisement