PAT (Advanced Level) Practice 1085 Perfect Sequence
最后一个测试点过不了,是因为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;
}
还没有评论,来说两句吧...