PAT (Advanced Level) Practice 1085 Perfect Sequence

ゞ 浴缸里的玫瑰 2023-07-03 07:25 93阅读 0赞

最后一个测试点过不了,是因为m*p可能超过了int的范围,导致判断条件出错,所以将数据类型改成longlong就好了。

  1. #include <iostream>
  2. #include <vector>
  3. #include <stdio.h>
  4. #include <algorithm>
  5. #define maxn 100001
  6. using namespace std;
  7. long long a[maxn],maxlen=0;
  8. int index=0;
  9. int main()
  10. {
  11. int n,p;
  12. cin>>n>>p;
  13. for(int i=0;i<n;i++){
  14. scanf("%ld",&a[i]);
  15. }
  16. sort(a,a+n);
  17. for(int i=0;i<n;i++){
  18. long long M = a[i];
  19. long long m = a[index];
  20. while(M>m*p && index<i){
  21. index++;
  22. m=a[index];
  23. }
  24. if(i-index+1>maxlen){
  25. maxlen=i-index+1;
  26. }
  27. }
  28. cout<<maxlen;
  29. return 0;
  30. }

发表评论

表情:
评论列表 (有 0 条评论,93人围观)

还没有评论,来说两句吧...

相关阅读