B. Sort the Array1300 / 排序

Posted 幽殇默

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了B. Sort the Array1300 / 排序相关的知识,希望对你有一定的参考价值。


https://codeforces.com/problemset/problem/451/B
如果本身直接有序的话,那么直接输出yes 选 1 1即可。
否则的话我们只能选一段逆序的,将其转换看可不可以,如果还不可以就输出no,否则输出yes。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int main(void)
{
	int n; cin>>n;
	vector<int>a(n+1),b(n+1);
	for(int i=1;i<=n;i++) cin>>a[i];
	b=a;
	sort(b.begin(),b.end());
	if(a==b)
	{
		puts("yes");
		cout<<"1 1";
		return 0;
	}
	for(int i=1;i<=n;i++)
	{
		if(i+1<=n&&a[i]>a[i+1])
		{
			int j=i;
			while(j<n&&a[j]>a[j+1]) j++;
			sort(a.begin()+i,a.begin()+i+j-i+1);
			if(a==b)
			{
				puts("yes");
				cout<<i<<" "<<j<<endl;
				return 0;
			}else break;
		}
	}
	puts("no");
	return 0;
}

以上是关于B. Sort the Array1300 / 排序的主要内容,如果未能解决你的问题,请参考以下文章

Sort the Array

Sort the Array

Sort the Array

588 div2 B. Expansion coefficient of the array

Codeforces 258B Sort the Array

B. Maria Breaks the Self-isolation1000 / 思维 贪心