Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <map>
- #include <vector>
- using namespace std;
- ifstream in("reteta2.in");
- ofstream out("reteta2.out");
- map<string, int> mp;
- string s;
- int p;
- int tot;
- void value() {
- string S = "";
- while(p < s.size() && (s[p] >= 'a' && s[p] <= 'z'))
- S = S + s[p++];
- int r = 0;
- while(p < s.size() && isdigit(s[p]))
- r = r*10 + s[p++] - '0';
- mp[S] += r;
- }
- void expr() {
- while(p < s.size()) {
- if(s[p] == ')') {
- p++;
- int nr = 0;
- while(p < s.size() && isdigit(s[p]))
- nr = nr*10 + s[p++] - '0';
- tot += nr;
- return;
- }
- if(s[p] == '(') {
- p++;
- expr();
- continue;
- }
- value();
- }
- }
- int main() {
- string t;
- getline(in, t);
- for(int i = 0; i < t.size(); i++) {
- if(t[i] != ' ')
- s += t[i];
- }
- expr();
- out << tot << '\n';
- for(map<string, int>::iterator it = mp.begin(); it != mp.end(); it++)
- out << it->first << " " << it->second << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement