Secuencia de la SEMANA 8 CSP-M2 A HRZ

Titulo

Inserte la descripción de la imagen aquí

Muestra

Inserte la descripción de la imagen aquí

Ideas

La idea es muy simple. Primero juzgue que hay varios números en los datos de entrada. Si es mayor que tres, generará directamente NO. Si es menor que tres, generará directamente SÍ. Salida SÍ, de lo contrario NO.

Reflexion

Al hacerlo en la clase, sin tener en cuenta la diferencia, la salida es directamente igual a tres, lo que resulta en solo unas pocas décimas (cubriendo la cara).

Atencion

El límite de datos para esta pregunta es 10 ^ 15. Se debe usar el tipo largo en lugar de int.

Código

#include <iostream>
#include <string.h>
#include <vector>
#include <algorithm>

using namespace std;

vector<long long> v,vt;
long long t, n, q, flag;

bool cmp1(long long a, long long b)
{
	return a < b;
}

int main()
{
	scanf("%d", &t);
	for (long long i = 1; i <= t; i++)
	{
		v.clear();
		vt.clear();
		flag = 0;
		scanf("%lld", &n);
		for (long long j = 1; j <= n; j++)
		{
			scanf("%lld", &q);
			v.push_back(q);
		}
		sort(v.begin(), v.end(), cmp1);
		for (long long j = 0; j < n-1; j++)
		{
			if (v[j] != v[j + 1])
			{
				vt.push_back(v[j]);
				flag++;				
			}
		}
		vt.push_back(v[n-1]);
		if (flag <= 1)
			printf("YES\n");
		else if(flag==2&&(vt[2]-vt[1])==(vt[1]-vt[0]))
			printf("YES\n");
		else
			printf("NO\n");
	}
    return 0; 
}
32 artículos originales publicados · elogiados 0 · visitas 672

Supongo que te gusta

Origin blog.csdn.net/qq_43814559/article/details/105546043
Recomendado
Clasificación