7-55 Keven裂了
分数 20
全屏浏览题目
切换布局
作者 江智康
单位 南昌航空大学
众所周知,Keven最喜欢说的一句话是
然后大家开始了愉快的做题之旅。
已知有 n 个题目, m分钟,做完每个题目所花费的时间是不一样的,求 Keven 最多可以做出多少个题目。
输入格式:
第一行是空格分隔的两个整数 n,m ,表示有 n 个题目和 m 分钟。1<=n<=1000,1<=m<=1000000
第二行有 n 个非负整数a1,a2,...,an,表示 Keven 做出第 i 个题目所需要的时间(单位:分钟)
输出格式:
输出一行一个整数表示Keven能做出的做多的题目数量
输入样例:
在这里给出一组输入。例如:
5 2
2 3 0 1 1
输出样例:
在这里给出相应的输出。例如:
3
详细的代码如下:
#include<stdio.h>
int main(){
int n;
long long int m;
scanf("%d %lld",&n,&m);
int a[n];
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
int count=0;
//给数组进行排序,这里最好用最快的排序方法
int gap=n;
while(gap>1){//希尔排序
gap=gap/2;
for(int i=0;i<n-gap;++i){
int end=i;
int tem=a[end+gap];
while(end>=0){
if(tem<a[end]){
a[end+gap]=a[end];
end-=gap;
}
else{
break;
}
}
a[end+gap]=tem;
}
}
//利用循环进行检验
/*for(int i=0;i<n;i++){
printf("%d\n",a[i]);
}*/
for(int i=0;i<n;i++){
if(m-a[i]>=0){
m-=a[i];
count++;
}
}
printf("%d",count);
return 0;
}