Brick99

2017 Izraz

Mar 8th, 2018
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.30 KB | None | 0 0
  1. /* https://www.rpz-rs.org/600/rpz-rs/Takmicarski/zadaci/iz/informatike/za/srednju/skolu,/skolska/2017./godina#.WqEFw-jwbcs */
  2.  
  3. /* IZRAZ */
  4.  
  5. #include <iostream>
  6. #include <vector>
  7. #include <algorithm>
  8. #include <string>
  9.  
  10. using namespace std;
  11.  
  12. #define usll unsigned long long
  13.  
  14. usll vr(string g)
  15. {
  16.     usll suma=0;
  17.     usll p=1;
  18.  
  19.     for (int i=g.size()-1;i>=0;i--)
  20.     {
  21.         int a=g[i]-'0';
  22.         suma+=a*p;
  23.         p*=10;
  24.     }
  25.  
  26.     return suma;
  27. }
  28.  
  29. int main()
  30. {
  31.     string iz;
  32.     cin>>iz;
  33.  
  34.     vector <int> ub;
  35.  
  36.     for (int i=0;i<iz.size();i++)
  37.     {
  38.         if (iz[i]=='-')
  39.         {
  40.             int br=0;
  41.  
  42.             for (int j=i+1;j<iz.size();j++)
  43.                 if (iz[j]=='+' || iz[j]=='-') break;
  44.                 else br++;
  45.  
  46.             if (br>=2) ub.push_back(i+2);
  47.         }
  48.     }
  49.  
  50.     for (int i=0;i<ub.size();i++) iz.insert(ub[i]+i,"+");
  51.  
  52.     unsigned long long suma=0;
  53.     int pred=1;
  54.     string g="";
  55.  
  56.     for (int i=0;i<iz.size();i++)
  57.     {
  58.         if (iz[i]!='+' && iz[i]!='-') g+=iz[i];
  59.         else
  60.         {
  61.             unsigned long long a=vr(g);
  62.  
  63.             suma+=a*pred;
  64.             g="";
  65.  
  66.             if (iz[i]=='+') pred=1;
  67.             else pred=-1;
  68.         }
  69.     }
  70.  
  71.     suma+=vr(g)*pred;
  72.     cout<<suma<<endl;
  73.     return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment