蓝桥杯《连号区间数》

题目描述

小明这些天一直在思考这样一个奇怪而有趣的问题:
在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是:
如果区间[L,  R]  里的所有元素(即此排列的第L个到第R个元素)递增排序后能得到一个长度为R-L+1的“连续”数列,则称这个区间连号区间。
当N很小的时候,小明可以很快地算出答案,但是当N变大的时候,问题就不是那么简单了,现在小明需要你的帮助。

输入格式

第一行是一个正整数N  (1  < =  N  < =  50000),  表示全排列的规模。 
第二行是N个不同的数字Pi(1  < =  Pi  < =  N),  表示这N个数字的某一全排列。

输出格式

输出一个整数,表示不同连号区间的数目。

样例输入

5
3 4 2 5 1

样例输出

9

注意事项

  1. 因为输入数据为连续数据,数据区间最大值和区间最小值之差与数据个数相同 ,即可保证连续区间。

参考代码

#include
#include 
using namespace std;
int main(){
	int n;
	cin>>n;
	vector nums(n,0);
	for(int i=0;i>nums[i];
	int ans=0;
	for(int i=0;imaxnums)
				maxnums=nums[j];
			else if(nums[j]

你可能感兴趣的:(蓝桥杯,算法,c++)