http://oj.ecustacm.cn/problem.php?id=1093
#include<cstdio>
#include<algorithm>
#include<string>
#include<iostream>
#include<vector>
#include<map>
using namespace std;
struct monkey
{
int id;
int weight;
int sum;
}stu[100005];
bool cmp1(monkey a,monkey b)//重量大到小
{
return a.weight>b.weight;
}
bool cmp2(monkey a,monkey b)//id从小到大
{
return a.id<b.id;
}
vector<int>v;
int main(void)
{
int n,m; cin>>n>>m;
int number;
for(int i=0;i<n;i++)
{
scanf("%d",&number);
v.push_back(number);
}
sort(v.begin(),v.end());//桃子的重量从小到大排
for(int j=0;j<m;j++)
{
scanf("%d",&stu[j].weight);
stu[j].id=j+1;
}
sort(stu,stu+m,cmp1);//猴子的重量从小到达排
int w=0;//排到第几个了
n--;
while(v.size())
{
stu[w++].sum+=v[n--];
v.pop_back();
if(w==m)//一轮了
w=0;
}
sort(stu,stu+m,cmp2);//id排好
for(int i=0;i<m;i++)
{
printf("%d ",stu[i].sum);
}
cout<<endl;
return 0;
}