• 1
  • 2
  • 3
  • 4
  • 5
  • 6

1030 完美数列 (25分)

1030 完美数列 (25分)

给定一个正整数数列,和正整数 ,设这个数列中的最大值是 ,最小值是 ,如果 ,则称这个数列是完美数列。

现在给定参数  和一些正整数,请你从中选择尽可能多的数构成一个完美数列。

输入格式:

输入第一行给出两个正整数  和 ,其中 )是输入的正整数的个数,)是给定的参数。第二行给出  个正整数,每个数不超过 

输出格式:

在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。

输入样例:

10 8
2 3 20 4 5 1 6 7 8 9

输出样例:

8

 

注意测试点4,容易超时,测试点3是数据类型问题

#include <iostream>
#include <algorithm>
#include<cmath>
#include<cstring>
using namespace std;

int main() {
int N, p;
int m[1000];
cin >> N >> p;
for (int i = 0; i < N; i++) {
cin >> m[i];
}
sort(m,m + N);
int zuiyou = 0;
for (int i = 0; i < N; i++) {
int mp = m[i] * p;
for (int j = N - 1; j >= i; j--) {
if (m[j] <= mp&&j-i+1>zuiyou){
zuiyou = j - i + 1;
break;
}
}
if (zuiyou >= N - i) {
break;
}
}
cout << zuiyou;
return 0;
}

 

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注