1877B - Helmets in Night Light - CodeForces Solution


binary search greedy sortings

Please click on ads to support us..

C++ Code:

#include<bits/stdc++.h>
using namespace std;


#define ll long long


// bool fun(vector<int>&a,vector<int>&b){
//     if(a[0]!=b[0]) return a[0]<b[0];
//     return a[1]>b[1];
// }

void solve(){

   
   ll n,p;
   cin>>n>>p;
   
   vector<ll> a(n),b(n);
   for(ll i=0;i<n;i++) cin>>a[i];
   for(ll i=0;i<n;i++) cin>>b[i];
   
   vector<vector<ll>> c(n+1);
   for(ll i=0;i<n;i++) c[i]={b[i],a[i]};
   c[n]={p,n-1};
   
   sort(c.begin(),c.end());
   
   if(c[0][0]>=p){
       cout<<n*p<<"\n";
       return;
   }
   
   ll ans=p;
   priority_queue<vector<ll>,vector<vector<ll>>,greater<vector<ll>>> pq;
   
    pq.push(c[0]);
    int ind=1;
    while(!pq.empty()){
        
        vector<ll>temp=pq.top();
        pq.pop();
        int cnt=temp[1],cost=temp[0];
        while(ind<n && cnt>0){
            pq.push(c[ind]);
            ind++;
            ans+=cost;
            cnt--;
        }
        
        if(ind>=n) break;
        
    }
   
   cout<<ans<<"\n";
   
}

int main(){
    
    
    
    ll t;
    cin>>t;
    
    while(t--){
        solve();
    }
    
}


Comments

Submit
0 Comments
More Questions

1691B - Shoe Shuffling
1706A - Another String Minimization Problem
1695B - Circle Game
1702B - Polycarp Writes a String from Memory
1701A - Grass Field
489C - Given Length and Sum of Digits
886B - Vlad and Cafes
915A - Garden
356A - Knight Tournament
1330A - Dreamoon and Ranking Collection
1692B - All Distinct
1156C - Match Points
1675A - Food for Animals
1328C - Ternary XOR
1689A - Lex String
1708B - Difference of GCDs
863A - Quasi-palindrome
1478A - Nezzar and Colorful Balls
1581B - Diameter of Graph
404A - Valera and X
908A - New Year and Counting Cards
146A - Lucky Ticket
1594C - Make Them Equal
1676A - Lucky
1700B - Palindromic Numbers
702C - Cellular Network
1672C - Unequal Array
1706C - Qpwoeirut And The City
1697A - Parkway Walk
1505B - DMCA