Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define SORT(x) sort(x.begin(), x.end())
- #define ff first
- #define ss second
- typedef vector<int> vi;
- typedef long long ll;
- typedef vector<ll> vl;
- typedef pair<int, int> pii;
- typedef vector<pii> vii;
- typedef pair<ll, ll> pll;
- typedef vector<pll> vll;
- inline ll LSB(ll x){return x & (-x);}
- int main(){
- ll n , k;
- cin >> n >> k;
- vector<pair<ll, pll>> vet(n);
- vector<pair<ll, pll>> res(n);
- ll pa = 0, pb = 0;
- vl ta(n+1, 0), tb(n+1, 0);
- int ia = 0, ib = 0;
- int uia = 0, uib = 0;
- for(int i = 0; i < n; ++i){
- auto&p = vet[i];
- cin >> p.ss.ff >> p.ss.ss;
- p.ff = i;
- }
- sort(vet.begin(), vet.end(), [](pair<ll, pll>&a,pair<ll, pll>&b){if(a.ss.ff == b.ss.ff)return a.ff < a.ff; return a.ss < b.ss;});
- for(int i = 0; i < n; ++i){
- auto&p = vet[i];
- auto&q = p.ss;
- while( ia < uia && ta[ia] <= q.ff){
- pa--;
- ia++;
- }
- while( ib < uib && tb[ib] <= q.ff){
- pb--;
- ib++;
- }
- if(pa <= pb){
- if(pa == 0){
- ta[uia] = q.ff;
- } else{
- ta[uia] = ta[uia-1];
- }
- ta[uia] = ta[uia] + q.ss;
- res[p.ff] = {p.ff, {'A', ta[uia]}};
- ++pa;
- uia++;
- } else{
- if(pb == 0){
- tb[uib] = q.ff;
- } else{
- tb[uib] = tb[uib-1];
- }
- tb[uib] = tb[uib] + q.ss * k;
- res[p.ff] = {p.ff, {'B', tb[uib]}};
- ++pb;
- uib++;
- }
- }
- for(int i = 0; i < n; ++i){
- cout << (char)res[i].ss.ff << ' ' << res[i].ss.ss << '\n';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement