pat 乙级 1030 完美数列

关键是qsort函数和滑动窗口
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 #include <math.h>
 5 int max(int a, int b)
 6 {
 7     return a > b ? a : b;
 8 }
 9 int cmp(const void *a, const void *b)
10 {
11     return *(int *)a - *(int *)b;
12 }
13 int main()
14 {
15     int n, p;
16     scanf("%d %d", &n, &p);
17     int num[n];
18     for (int i = 0; i < n; i++)
19     {
20         scanf("%d", &num[i]);
21     }
22     qsort(num, n, sizeof(num[0]), cmp);
23     int left = 0;
24     int right = 0;
25     int maxlen = 0;
26     while (right < n && left < n)
27     {
28         if ((long long)num[left] * p >= (long long)num[right])
29         {
30             ++right;
31             maxlen = max(maxlen, right - left);
32         }
33         else
34         {
35             ++left;
36         }
37     }
38     printf("%d", maxlen);
39     return 0;
40 }

 

posted @ 2023-03-20 01:05  雨中白发人  阅读(19)  评论(0)    收藏  举报