Cod sursa(job #2132100)

Utilizator sergiudnyTritean Sergiu sergiudny Data 15 februarie 2018 14:01:01
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <bits/stdc++.h>
#define x first
#define y second
#define pb push_back
using namespace std;
ifstream fin("reteta2.in");
ofstream fout("reteta2.out");

struct ing{
    string s;
    int c=0;
};
map<string,int>mp;
string v;
int totaltime;

int parseNumber(int &i){
    int ans=0;
    for(;i<v.size() && isdigit(v[i]);++i)
        ans=ans*10+v[i]-'0';
    return ans;
}

void getIng(int &i){
    i++;
    ing curr;
    for(;i<v.size();++i){
        cout<<v.size()<<" "<<i<<" "<<v[i]<<'\n';
        if(v[i]==')') break;
        if(v[i]==' '){
            cout<<curr.s<<" "<<curr.c<<'\n';
            if(curr.c!=0){
                mp[curr.s]+=curr.c;
                curr.s.clear(),curr.c=0;
            }
            continue;
        } else if(v[i]=='('){
            getIng(i);
        } else if(isdigit(v[i])){
            curr.c=parseNumber(i),i--;
        } else {
            curr.s.pb(v[i]);
        }
    }
    for(;i<v.size() && v[i]==' ';++i);
    totaltime+=parseNumber(i);
}

int main()
{
    fin>>v;
    cout<<v;
    int i=0;
    getIng(i);
    fout<<totaltime<<'\n';
    for(auto i:mp){
        fout<<i.x<<" "<<i.y<<'\n';
    }
    return 0;
}