最後一個測試點過不了,是因爲m*p可能超過了int的範圍,導致判斷條件出錯,所以將數據類型改成longlong就好了。
#include <iostream>
#include <vector>
#include <stdio.h>
#include <algorithm>
#define maxn 100001
using namespace std;
long long a[maxn],maxlen=0;
int index=0;
int main()
{
int n,p;
cin>>n>>p;
for(int i=0;i<n;i++){
scanf("%ld",&a[i]);
}
sort(a,a+n);
for(int i=0;i<n;i++){
long long M = a[i];
long long m = a[index];
while(M>m*p && index<i){
index++;
m=a[index];
}
if(i-index+1>maxlen){
maxlen=i-index+1;
}
}
cout<<maxlen;
return 0;
}