Pagini recente » Cod sursa (job #809010) | Cod sursa (job #3188726) | Cod sursa (job #626379) | Cod sursa (job #1441881) | Cod sursa (job #2132102)
#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;
}