#168-[暴力模拟]优美序列

Description

对于一个包含n>0个元素的整数序列,如果序列中相邻元素之差的绝对值取遍从1到n-1的所有整数,那么这个序列就叫做优美序列。例如:1 4 2 3就是一个优美序列,因为相邻元素之差的绝对值分别为3 2 1。这个定义意味着所有单元素序列都是一个优美序列。写一个程序来判断一个序列是不是优美序列。

Input

输入文件graceful.in中,有若干行(不会超过500行),每一行第一个数是n(2<=n<=3000),接下来有n个整数,分别表示一个序列。数的绝对值不超过105。

Output

输出文件graceful.out中,对应于输入文件中的每一行,每行输出“YES”或“NO”(注意都是大写字母),表示输入文件中的每一行的输入序列,是否是优美序列。

Sample Input

4 1 4 2 3
5 1 4 2 -1 6

Sample Output

YES
NO

HINT

 

【注释】

对于50%的数据,满足2≤n≤21。数据不会超过10行。

对于100%的数据,满足2≤n≤3000。数据不会超过500行。

根据数据大小,这是一道水题,可以暴力

#include 
#include 
#include 

using namespace std;

set s;

int main(void)
{
	int n, x, last, i;
	
	while (~scanf("%d", &n))
	{
		s.clear();
		scanf("%d", &last);
		for (i = 2; i <= n; ++i)
		{
			scanf("%d", &x);
			if (abs(x - last) < n) // 如果相差的绝对值小于N才能入集合
			{
				s.insert(abs(x - last));
			}
			last = x;
		}
		if (s.size() == n - 1) // 如果N - 1个绝对值都有,才成立
		{
			printf("YES\n");
		}
		else
		{
			printf("NO\n");
		}
	}
	
	return 0;
}

 

你可能感兴趣的:(刷题,gdgzoi刷题)