现在是时候为大学生程序设计竞赛做准备了!几乎所有程序设计大赛的成员都在头脑风暴和日夜码代码以赶上截止日期。 你是一个出色的学生,负责检查题目难度的安排。

现在是时候为大学生程序设计竞赛做准备了!几乎所有程序设计大赛的成员都在头脑风暴和日夜码代码以赶上截止日期。

你是一个出色的学生,负责检查题目难度的安排。

现在你得到了所有问题的难度分数。要求的安排规则如下:

1.问题的数量应该在10到13之间(包括两者)。

2.最简单问题的难度分数(也就是说,难度分数最小的问题)应该等于1。

3.至少有两个问题的难度分数应等于1。

4.在按照难度分数从小到大的顺序排列问题后,两个相邻问题的难度分数之差的绝对值应该不大于2。但是,如果两个相邻问题之一是最难的问题,那么没有限制他们之间的难度分数的差异。最难的问题是难度最大的问题。保证只有一个最难的问题。

团队成员给了你很多题目难度的安排。请检查这些安排是否遵守规则。
INPUT
有多个测试用例。 输入的第一行是一个整数T (1 ≤ T ≤ 104), 的测试用例。 然后是T 测试用例。
每个测试用例的第一行包含一个整数 n (1 ≤ n ≤ 100) 问题的数量。

下一行包含 n integers s1, s2, … , sn (-1000 ≤ si ≤ 1000) 每个问题的难度分数。

友情提醒,这个问题包含大量的输入输出文件,所以建议使用更快的输入输出方法。
OUTPUT
对于每个测试用例,如果排列遵循规则输出“Yes”(不带引号),否则输出“No”(不带引号)。
TEST
8
9
1 2 3 4 5 6 7 8 9
10
1 2 3 4 5 6 7 8 9 10
11
999 1 1 2 3 4 5 6 7 8 9
11
999 1 3 5 7 9 11 13 17 19 21
10
15 1 13 17 1 7 9 5 3 11
13
1 1 1 1 1 1 1 1 1 1 1 1 2
10
2 3 4 5 6 7 8 9 10 11
10
15 1 13 3 6 5 4 7 1 14

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int a[10000];
int comp(const void *p,const void *q)
{
	return (*(int *)p-*(int*)q);
}
int main()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		memset(a,0,sizeof(int));
		int flag = 1;
		int n;
		scanf("%d",&n);
		if(n<10||n>13)//问题数量是否合法
			flag = 0;
		for (int i = 0; i < n; ++i)
		{
			scanf("%d",&a[i]);
			if(a[i]<1)//分数是否合法
				flag=0;
		}
		if(flag==0)//此时判断为假直接输出进入下次循环
		{
			printf("No\n");
			continue;
		}
		qsort(a,n,sizeof(int),comp);
		/*for (int i = 0; i < n; ++i)
			printf("%d ",a[i]);*///测试快排效果*/
		if(a[1]!=1)//最小两个不是1
		{
			flag=0;
			printf("No\n");
			continue;
		}
		for(int i = 1;i < n-1; i++)//是否小于2
		{
			if(a[i]-a[i-1]>2)
			{
				flag=0;
				break;
			}
		}
		if(flag==0)
			printf("No\n");
		else
			printf("Yes\n");
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值