#include <string>
#include <vector>
#include <cmath>
using namespace std;
int CalculateScore(int score, char bonus) {
if(bonus == 'S')
return pow(score, 1);
else if(bonus == 'D')
return pow(score,2);
else
return pow(score,3);
}
int solution(string dartResult) {
vector<int> v;
for(int idx = 0; idx < dartResult.length(); idx++) {
char ele = dartResult.at(idx);
int num = 0;
if(dartResult.substr(idx, 2) == "10")
v.push_back(CalculateScore(stoi(dartResult.substr(idx, 2)), dartResult.at(idx+2)));
else if('0' <= ele && ele <= '9')
v.push_back(CalculateScore(ele-'0', dartResult.at(++idx)));
else if (ele == '*') {
int vSize = v.size();
if(vSize == 1) v.at(0) = v.at(0) * 2;
else {
v.at(vSize-1) *= 2;
v.at(vSize-2) *= 2;
}
}
else if (ele == '#') {
v.back() = v.back() * -1;
}
}
int answer = 0;
for(auto ele : v)
answer += ele;
return answer;
}