Решение задачи Сортируем массив с Codeforces

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


Как и все программисты, вы очень любите массивы. На день рождения друзья подарили вам массив a, состоящий из n различных целых чисел.

К сожалению, массив a слишком маленький. А вы хотите большой массив! Друзья договорились дать вам массив побольше, но только если вы сможете верно ответить на следующий вопрос: можно ли отсортировать массив a (по возрастанию), выполнив переворот ровно одного подотрезка a? Определения подотрезка и переворота находятся в примечаниях.

Код

#include <bits/stdc++.h>
using namespace std;
int a[100005];
int main()
{
	int n,j,l=1,r=1;
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	for(int i=1;i<n;i++)
	{
		if(a[i+1]<a[i])
		{
			l=i;
			break;
		}
	}
	for(int i=2;i<=n;i++)
		if(a[i]<a[i-1])
			r=i;
	reverse(a+l,a+r+1);
	for(int i=1;i<n;i++)
		if(a[i]>a[i+1])
		{
			cout<<"no"<<endl;
			return 0;
		}
	cout<<"yes"<<endl;
	cout<<l<<" "<<r;
	return 0;
}

         

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



Комментарии

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