You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.2 KiB
52 lines
1.2 KiB
#include <bits/stdc++.h>
|
|
|
|
using namespace std;
|
|
|
|
struct action {
|
|
int v;
|
|
int c;
|
|
};
|
|
|
|
int main() {
|
|
//输入+输出重定向
|
|
//freopen("../x.in", "r", stdin);
|
|
//freopen("../x.out", "w", stdout);
|
|
stack<action> s;
|
|
|
|
int v0, c0, n;
|
|
string cmd;
|
|
int v, c;
|
|
action a;
|
|
|
|
cin >> v0 >> c0 >> n;
|
|
for (int i = 0; i < n; ++i) {
|
|
cin >> cmd;
|
|
if (cmd == "P") {
|
|
cin >> v >> c;
|
|
a.c = c;
|
|
a.v = v;
|
|
s.push(a);
|
|
//计算现在的质量和浓度
|
|
v0 += a.v;
|
|
c0 += a.c;
|
|
//输出计算完的结果
|
|
cout << v0 << " " << setiosflags(ios::fixed) << setprecision(5) << 100*c0 * 1.0 / v0 << endl;
|
|
}
|
|
if (cmd == "Z") {
|
|
if (!s.empty()) {
|
|
a = s.top();
|
|
//计算现在的质量和浓度
|
|
v0 -= a.v;
|
|
c0 -= a.c;
|
|
//输出计算完的结果
|
|
cout << v0 << " " << setiosflags(ios::fixed) << setprecision(5) << 100*c0 * 1.0 / v0 << endl;
|
|
s.pop();
|
|
}
|
|
}
|
|
}
|
|
//关闭文件
|
|
//fclose(stdin);
|
|
//fclose(stdout);
|
|
return 0;
|
|
}
|