#include <iostream>
#include <algorithm>
using namespace std;
struct bottle{
int num;
int cap;
};
bottle arr[1000];
bool reduce1(bottle a,bottle b){
if(a.cap!=b.cap) return a.cap > b.cap;
return a.num > b.num;
}
bool reduce2(int a,int b){
return a > b;
}
int ball[1000];
int main()
{
int n_ball,n_bot;
while(cin >> n_ball >> n_bot){
for(int i=0; i < n_ball; ++i)
cin >> ball[i];
for(int i=0; i < n_bot; ++i)
cin >> arr[i].num >> arr[i].cap;
sort(arr,arr+n_bot,reduce1);
sort(ball,ball+n_ball,reduce2);
long long k=0,count_n=0,count_cap=0;
for(int i=0; i < n_ball; ++i){
while(arr[k].num==0) k ++;
if(k>=n_bot) break;
if(ball[i]<=arr[k].cap){
count_cap += ball[i];
count_n ++;
arr[k].num --;
}
}
cout << count_n << " " << count_cap << endl;
}
}
Sicily 1890 BallsAgain
最新推荐文章于 2017-12-20 22:06:30 发布