RC-u3 跑团机器人
模拟题,注意判断条件
#include <iostream>
#include <map>
using namespace std;
string a;
map<int, int> t;
int maxx = 0, minn = 0;
void solve()
{
int l = 0, r = a.size() - 1, s = 1;//判断符号,s = 1是正,否则为负
while (l <= r) {
int sum = 0, cnt = 0;
while (l <= r && a[l] != 'd' && a[l] != '+' && a[l] != '-')
sum = sum * 10 + a[l++] - '0';
// cout << sum << endl;
if (a[l] == 'd') { //如果是一个式子
if (sum == 0) // 对应 d2 情况
sum = 1;
l++;
while (l <= r && a[l] != '+' && a[l] != '-')
cnt = cnt * 10 + a[l++] - '0';
t[cnt] += sum;
// cout << sum << ' ' << cnt << endl;
if (s == 1) {
maxx += sum * cnt;
minn += sum;
} else {
maxx -= sum;
minn -= sum * cnt;
}
} else { //如果是一个普通的数
maxx += s * sum;
minn += s * sum;
}
if (l <= r && a[l] == '+')
s = 1;
else
s = -1;
l++;
// cout << sum << ' ' << cnt << endl;
}
}
int main()
{
cin >> a;
solve();
for (auto i : t) {
cout << i.first << ' ' << i.second << endl;
}
cout << minn << ' ' << maxx << endl;
return 0;
}