➤ Problem Link : 1082C. Multi
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int bool comp(vector<int> x,vector<int> y) { return x.size()<y.size(); } int main() { int n,m,s,k; cin>>n>>m; vector<int> subj[m+1]; for(int i=1;i<=n;i++) { cin>>s>>k; subj[s].push_back(k); } sort(subj,subj+m+1,comp); for(int i=1;i<=m;i++) sort(subj[i].begin(),subj[i].end(),greater<int>()); for(int i=1;i<=m;i++) { for(int j=1;j<subj[i].size();j++) subj[i][j]+=subj[i][j-1]; } int ans=-1; vector<int> mp[m+1]; for(int i=m;i>=1;i--) { for(int j=0;j<subj[i].size();j++) { if(i!=m) mp[i].push_back(max(subj[i][j],max(subj[i][j]+mp[i+1][j],mp[i+1][j]))); else mp[i].push_back(subj[i][j]); ans=max(ans,mp[i][j]); } } if(ans>0) cout<<ans; else cout<<"0"; }
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!!