代码:
#include<iostream> #include<algorithm> #include<vector> #include<string> #include<math.h> const int max_=1e5+5; using namespace std; vector<int>ve[max_]; int sum[max_]; int main() { int n,m; int ans,maxm=0; int len=0; scanf("%d %d",&n,&m); for(int i=0;i<n;i++) { int x,w; scanf("%d %d",&x,&w); ve[x].push_back(w); } for(int i=1;i<=m;i++) { sort(ve[i].begin(),ve[i].end(),greater<int>()); len=max(len,(int)ve[i].size()); } for(int i=1;i<=m;i++) { ans=0; for(int j=0;j<ve[i].size();j++) { ans+=ve[i][j]; if(ans<0) break; sum[j]+=ans; } } for(int i=0;i<len;i++) maxm=max(sum[i],maxm); cout<<maxm<<endl; }