测试点3报错:max初始值设为1!
测试点4报错:排序和遍历算法不够快,超时
测试点5报错:没有用长整型
#include<stdio.h>
#include<stdlib.h>
int cmplist(int *a,int *b){
return (*a-*b);
}
int main(){
long long int a,p,max=1;
//这里的a取到10^5,理论上不用long,但是p和max记得要long,不然测试点5报错
scanf("%lld %lld\n",&a,&p);
int s[a];
for(int q=0;q<a;q++){
scanf("%d",&s[q]);
}
qsort(s,a,sizeof(s[0]),cmplist);
//qsort快速排序,不然测试点4会超时,冒泡和选择都不行!
for(int q=0;a-q>max;q++){
for(int w=q+max;w<a;w++){
if(s[w]<=p*s[q]){
max++;
}
else{
break;
}
}
}
//对有序数组进行双循环遍历判断,w=q+max和break能防止超时
printf("%lld",max);
}