题目:

代码:

#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;
}
View Code

 

posted on 2018-11-30 22:17  海苔  阅读(112)  评论(0编辑  收藏  举报