有没有da lao帮我看下zhe ti为什么错了
Description
lao shi给里面的小朋友们布置了一场游戏,A第一个站了出来,游戏是这样的,总共有n个苹果,吃第i个苹果可以得到a[i]的分数。
假设A是大胃王,意味着他可以一直吃不会吃撑。
现在会有q次询问,每次询问最少吃多少个苹果可以得到不小于x的得分,无法满足就输出-1.
注意:在每次询问中,不能多次吃同一个苹果,每次询问互相独立,不会因为第一次询问吃了几个后苹果不够的情况。
Format
Input
第一行输入n和q,代表苹果总数和询问次数
第二行nn个数字a[i],代表吃第ii个苹果的得分。
接下来q行qq个数字,每次输入一个xx,代表得分。具体可参考题目描述
Output
一共输出qq行,每行一个数字。
若可以得到xx的得分,则输出最少吃的苹果数量。
否则输出-1
Samples
输入数据 1
8 7
4 3 3 1 1 4 5 9
1
10
50
14
15
22
30
输出数据 1
1
2
-1
2
3
4
8
输入数据 2
4 1
1 2 3 4
3
输出数据 2
1
Explain
针对样例2,只有一次询问,需要达到的得分是3,此时我们可以选择吃1和2,或者单独吃3或者单独吃4都可达到目标,由于选择最少的数量,所以单独吃3或者4都可以。
我的代码:
#include<bits/stdc++.h>
using namespace std;
bool cmp(int x,int y){
return x>y;
}
int main(){
int n,qs,num=0;
cin>>n>>qs;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
num+=a[i];
}
sort(a,a+n,cmp);
for(int p=0;p<qs;p++){
int m,sum=0;
cin>>m;
if(m>num) cout<<" "<<-1<<endl;
else if(m==num) cout<<" "<<n<<endl;
else if(m==0) cout<<" "<<0<<endl; //9 5 4 4 3 3 1 1
else{
for(int i=0;i<n;i++){
sum+=a[i];
if(sum>=m){
cout<<" "<<i+1<<endl;
continue;
}
}
}
}
return 0;
}
运行后(前面有一长串空格的是输出,用的是测试样例1):
粗体是屏蔽词,忽略就好