有没有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
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>a[i];
num+=a[i];
}
sort(a,a+n,cmp);
for(int p=0;pint m,sum=0;
cin>>m;
if(m>num) cout<<" "<<-1<else if(m==num) cout<<" "<else if(m==0) cout<<" "<<0<//9 5 4 4 3 3 1 1
else{
for(int i=0;iif(sum>=m){
cout<<" "<1<continue;
}
}
}
}
return 0;
}
运行后(前面有一长串空格的是输出,用的是测试样例1):
粗体是屏蔽词,忽略就好
把第26行的continue换成break就可以啦
因为第24行的判断已经说明第一次进入的i+1是最少的数量了,所以不需要继续吃苹果,直接退出循环,进行下一次输入
你必须严格按照要求输出结果
胡乱输出一大堆空格带数据,能对才怪
还有,人家要求全部输入完了再统一输出
你这输入一半就开始输出了呀