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 }

浙公网安备 33010602011771号