PAT 1085. Perfect Sequence
#include <cstdio> #include <climits> #include <cstdlib> #include <algorithm> using namespace std; int main() { int N,p; scanf("%d%d", &N, &p); if (N < 1) { printf("%d\n", 0); return 0; } vector<int> seq(N); for (int i=0; i<N; i++) { scanf("%d", &seq[i]); } if (N < 2) { printf("%d\n", 1); return 0; } sort(seq.begin(), seq.end()); long long m = seq[0]; long long M = seq[0]; int i = 0, j = 1; int max_len = 1; int cur_len = 1; while (i < j && j < N) { m = seq[i]; M = seq[j]; if (M <= m * p) { cur_len = j - i + 1; j++; } else { while (M > m * p) { m = seq[++i]; } } if (cur_len > max_len) { max_len = cur_len; } } printf("%d\n", max_len); return 0; }