Advertisement
Guest User

Untitled

a guest
Feb 26th, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.17 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <map>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. ifstream in("reteta2.in");
  9. ofstream out("reteta2.out");
  10.  
  11. map<string, int> mp;
  12. string s;
  13. int p;
  14. int tot;
  15.  
  16. void value() {
  17.  
  18.     string S = "";
  19.     while(p < s.size() && (s[p] >= 'a' && s[p] <= 'z'))
  20.         S = S + s[p++];
  21.     int r = 0;
  22.     while(p < s.size() && isdigit(s[p]))
  23.         r = r*10 + s[p++] - '0';
  24.     mp[S] += r;
  25.  
  26. }
  27.  
  28. void expr() {
  29.  
  30.     while(p < s.size()) {
  31.  
  32.         if(s[p] == ')') {
  33.             p++;
  34.             int nr = 0;
  35.             while(p < s.size() && isdigit(s[p]))
  36.                 nr = nr*10 + s[p++] - '0';
  37.             tot += nr;
  38.             return;
  39.         }
  40.  
  41.         if(s[p] == '(') {
  42.             p++;
  43.             expr();
  44.             continue;
  45.         }
  46.  
  47.         value();
  48.  
  49.     }
  50.  
  51. }
  52.  
  53. int main() {
  54.  
  55.     string t;
  56.     getline(in, t);
  57.     for(int i = 0; i < t.size(); i++) {
  58.         if(t[i] != ' ')
  59.             s += t[i];
  60.     }
  61.  
  62.     expr();
  63.  
  64.     out << tot << '\n';
  65.     for(map<string, int>::iterator it = mp.begin(); it != mp.end(); it++)
  66.         out << it->first << " " << it->second << '\n';
  67.  
  68.     return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement