PAT Nivel B 1030 Secuencia perfecta 25 (Puntos)

tema

Dada una secuencia de números enteros positivos y números enteros positivos pp p , deje que el valor máximo en esta secuencia sea MM M y el valor mínimo sea mm m , si M ≤ mp M \ le mp M m p , entonces la secuencia se llama perfecta secuencia.

Ahora, los parámetros dados PP el p- y algunos de los números enteros positivos, elija ya que muchos números constituyen una serie perfecta.

Formato de entrada:

De entrada de la primera línea da dos enteros positivos NN N y PP P , donde NN N ( ≤ 0. 1. 5 \ ^ Le. 5 10 . 1 0 ? . 5 ? ? ) Es el número de entero positivo de entrada, PP P ( ≤ 0 9 1 \ Le 10 ^ 9 1 0 ? 9 ? ? ) se da parámetros. La segunda línea da NN N enteros positivos, cada uno del número no exceda de 10 910 ^ 9 . 1 0 ? 9 ? ? .

Formato de salida:

El número máximo de números que se pueden seleccionar en una salida de línea se puede utilizar para formar una secuencia numérica perfecta.

Muestra de entrada:

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

Salida de muestra:

8

Código


#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    
    
	int N, p,num,min,max,stat,maxx=1,maxxx;
	cin >> N >> p;
	int* a = new int[N];
	for (num = 0; num < N; num++)
		cin >> a[num];
	sort(a,a+N);
	for (stat = 0; stat < N; stat++)
	{
    
    
		min = a[stat];
		if (N - stat > maxx)
		{
    
    
			maxxx = 0;
			for (num = stat+maxx-1; num <N; num++)
			{
    
    
				max = a[num];
				if (float(max) / float(p) <= float(min))
					maxxx = num - stat + 1;
				else
					break;
			}
			if (maxxx > maxx)
				maxx = maxxx;
		}
		else
			break;
	}
	cout << maxx;
	return 0;
}

Enlace de detalles de la pregunta

Supongo que te gusta

Origin blog.csdn.net/qq_41985293/article/details/114983475
Recomendado
Clasificación