PAT B1030 perfect sequence (25 points) (dual pointer algorithm)

Insert picture description here

#include <cstdio>
#include <algorithm>

using namespace std;

int main(){
    
    
	int n, p;
	scanf("%d %d", &n, &p);
	
	int arr[n];
	for(int i=0; i<n; i++){
    
    
		scanf("%d", &arr[i]);
	}
	
	sort(arr, arr+n);
	
	int count = -1;
	int j = 0;
	for(int i=0; i<n; i++){
    
    
		for(; j<n; j++){
    
    
			if(arr[j] > (long long)arr[i]*p){
    
    
				break;
			}
		}
		count = max(count, j-i);
	}
	
	printf("%d", count);
		
	return 0;
}

Guess you like

Origin blog.csdn.net/weixin_45964844/article/details/111985424