洛谷 CF572B题解
发布时间 2023-08-08 10:41:39作者: SSSSSSSSSSoil
queue 和 stack 中,如果不到 \(s\) 就取完为止。queue 和 stack 中的所有元素即可。cpp<br />#include<bits/stdc++.h><br />using namespace std;<br />char c ;<br />int n , s , q[10005] , p[10005] , t1[100005] , t2[100005] , n1 , n2 ;<br />stack<int> s1 ;<br />queue<int> s2 ;<br />signed main(){<br /> cin >> n >> s ;<br /> for( int i = 1 ; i <= n ; i ++ ){<br /> cin >> c >> p[i] >> q[i] ;<br /> if( c == 'S' ){<br /> t1[p[i]] += q[i] ;<br /> }<br /> else{<br /> t2[p[i]] += q[i] ;<br /> }<br /> }<br /> for( int i = 1 ; i <= 100000 ; i ++ ){<br /> if( t1[i] > 0 && n1 < s ){<br /> s1.push( i ) ;<br /> n1 ++ ;<br /> }<br /> }<br /> for( int i = 100000 ; i >= 1 ; i -- ){<br /> if( t2[i] > 0 && n2 < s ){<br /> s2.push( i ) ;<br /> n2 ++ ;<br /> }<br /> }<br /> while( !s1.empty() ){<br /> cout << "S " << s1.top() << " " << t1[s1.top()] << "\n" ;<br /> s1.pop() ;<br /> }<br /> while( !s2.empty() ){<br /> cout << "B " << s2.front() << " " << t2[s2.front()] << "\n" ;<br /> s2.pop() ;<br /> }<br /> return 0 ;<br />}<br />