Решение задачи "Круг студентов" с Codeforces

Без пояснения   Просмотров: 10


n студентов выстроились в кругу в некотором порядке. Индекс i-го студента равен pi. Гарантируется, что все индексы студентов — различные целые числа от 1 до n (то есть они образуют перестановку).

Студенты хотят станцевать хоровод. Прямой хоровод можно станцевать тогда, когда студент 2 идет сразу же после студента 1 в порядке по часовой стрелке (между ними не должно стоять студентов), студент 3 идет сразу же после студента 2 в порядке по часовой стрелке, и так далее, и студент n идет сразу же за студентом n−1 в порядке по часовой стрелке. Обратный хоровод — почти то же самое. Единственное отличие в том, что студент i должен идти сразу же после студента i−1 в порядке против часовой стрелки (это условие должно выполняться для всех i от 2 до n).

Например, если индексы студентов в порядке по часовой стрелке равны [2,3,4,5,1], то они могут станцевать прямой хоровод. Если индексы студентов равны [3,2,1,4] в порядке по часовой стрелке, тогда они смогут станцевать обратный хоровод.

Ваша задача — определить, возможно ли станцевать хоровод. Заметьте, что студенты не могут менять своих позиций перед началом танца; они не могут меняться местами или покидать круг, а также никакой другой студент не может встать в круг.

Вам необходимо ответить на q независимых запросов.

Код

#include<bits/stdc++.h>
using namespace std;
int Q,n,a,x,c,b;
int main()
{
	scanf("%d",&Q);
	while(Q--)
	{
		scanf("%d%d",&n,&a);
		x=a;c=0;
		for(int j=1;j<n;j++)
		{
			scanf("%d",&b);
			if(abs(a-b)>1)c++;
			a=b;
		}
		if(abs(x-a)>1)c++;
		if(c>1)puts("NO");else puts("YES");
	}
}

         

 Администратор Photo Автор: Администратор


Отправить решение задачи
Чтобы отправить решение вам нужно войти в систему или зарегистрироваться

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться