新手守护
2794 买礼品经验值:1200
题目描述 Description
某小学有n名小朋友,儿童节到了要给他们带去礼物。调查显示,有Ci个小朋友想要第i种礼品,这种礼物的售价为Pi。现在有B元的预算,他最多可以满足多少小朋友?(B的值可能很大)
输入描述 Input Description
第一行,两个整数,N B
接下来N行,每行两个整数,Pi Ci
输出描述 Output Description
输出能有多少小朋友满意
样例输入 Sample Input
5 50 5 3 1 1 10 4 7 2 60 1
样例输出 Sample Output
8
数据范围及提示 Data Size & Hint
所有数据的范围不超过long long
N<=100000
#include<iostream>
#include<algorithm>
using namespace std;
long long n,s,cnt;
struct me{
int Pi,Ci;
}a[100005];
bool cmp(me x,me y){
return x.Pi<y.Pi;
}
int main(){
cin>>n>>s;
for(int i=1;i<=n;i++){
cin>>a[i].Pi>>a[i].Ci;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
if(s>=(a[i].Pi*a[i].Ci)){
s-=(a[i].Pi*a[i].Ci);
cnt+=a[i].Ci;
}
else{
int m=s*1.0/a[i].Pi;
cnt+=m;
break;
}
}
cout<<cnt;
return 0;
}
50