题目描述
日光过于强烈会遮住月亮的反射光,在神话时代天上有 �n 个太阳,太阳光芒有 �m 种,其中第 �i 种亮度为 ��ai 的太阳有 ��bi 个,只有当所有太阳的亮度总和小于 �x 时才能看到月光。
后羿希望看到月亮上的嫦娥,决定射下来几个太阳,他想知道最少射下来几个太阳才能看到月亮。
输入格式
第一行三个整数 �,�,�n,m,x
接下来 �m 行,每行 22 个整数 ��,��ai,bi
输出格式
一个整数,表示后羿至少射下来几个太阳
样例 #1
样例输入 #1
6 4 10
1 2
7 1
8 1
9 2
Copy
样例输出 #1
3
Copy
提示
对于 50%50% 的数据 :1≤�,�≤1001≤n,m≤100
对于 100%100% 的数据:0≤�,��,��,�≤109,1≤�≤1060≤n,ai,bi,x≤109,1≤m≤106。
保证 ∑��=�∑bi=n
解题代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,x,sum=0,number=0;
int a[100],b[100],c[10000];
cin>>n>>m>>x;
for(int i=0;i<m;i++){
cin>>a[i]>>b[i];
sum=sum+a[i]*b[i];
}
for(int i=0;i<n;i++){
for(int j = i;j<n;j++){
if(a[i]<a[j]){
int temp1=a[i];
int temp2=b[i];
a[i]=a[j];
a[j]=temp1;
b[i]=b[j];
b[j]=temp2;
}
}
}
for(int k=0;k<n;k++){
for(int y=0;y<b[k];y++){
if(sum>x){
sum=sum-a[k];
number++;
}
else{
break;
}
}
}
cout<<number;
return 0;
}