/* * @Author: Gehrychiang * @LastEditors : Gehrychiang * (1)初始化栈 stack<int>vis ,定义一个栈 (2)入栈 vis.push(x) (3)出栈 vis.pop() (4)判断是否为空 vis.empty() (5)判断栈中元素的数量vis.size() (6)得到栈的栈顶元素 vis.top() * @Website: www.yilantingfeng.site * @E-mail: gehrychiang@aliyun.com */ #include <bits/stdc++.h> using namespace std; double vtmp[10005]; double ctmp[10005]; int main() { stack<double>v; stack<double>c; stack<double>tmp; double v0,c0; cin>>v0>>c0; int n; cin>>n; for (int t = 0; t < n; t++) { char tmp; cin>>tmp; if(tmp=='P') { double a,b; cin>>a>>b; v.push(a); c.push(b); } else if(tmp=='Z') { if(!v.empty()) { v.pop(); } if(!c.empty()) { c.pop(); } } memset(vtmp,0,sizeof(vtmp)); memset(ctmp,0,sizeof(ctmp)); int tolv=0; double tolc=0; int s=v.size(); for (int i = 0; i < s; i++) { vtmp[i]=v.top(); v.pop(); ctmp[i]=c.top(); c.pop(); tolv+=vtmp[i]; tolc+=vtmp[i]*ctmp[i]; } printf("%d %.5lf\n",tolv+(int)v0,(tolc+v0*c0)/((tolv+v0))); //cout<<tolv+v0<<" "<<(tolc+v0*c0)/((tolv+v0))<<endl; for (int i = s-1; i >=0 ; i--) { v.push(vtmp[i]); c.push(ctmp[i]); } } return 0; }