➤ Problem Link : 416C. Booking System
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
bool comp(pair<pair<int,int>,int > x, pair<pair<int,int>,int > y)
{
return x.first.first> y.first.first;
}
int main()
{
int n,k,ans=0,cnt=0,l;
cin>>n;
pair<pair<int,int>,int > req[n];
for(int i=0;i<n;i++)
{
req[i].second=i+1;
cin>>req[i].first.second>>req[i].first.first;
}
cin>>k;
multiset<pair<int,int> > st;
for(int i=1;i<=k;i++)
{
cin>>l;
st.insert(make_pair(l,i));
}
sort(req,req+n,comp);
vector<pair<int,int> > mat;
for(int i=0;i<n;i++)
{
auto it=st.lower_bound({req[i].first.second,INT_MIN});
if(it != st.end())
{
mat.push_back(make_pair(req[i].second,(*it).second));
st.erase(it);
ans+=req[i].first.first;
cnt++;
}
}
sort(mat.begin(),mat.end());
cout<<cnt<<" "<<ans<<endl;
for(auto it: mat)
cout<<it.first<<" "<<it.second<<endl;
}
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!
