题意:一个区间排序后有序,就算做一个连续区间

思路:因为题目没有重复数据,所以一段区间的最大值和最小值得差等于区间长度-1,就是一个连号区间

AC代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <cstring>
#include <climits>
#include <cmath>
#include <cctype>

const int inf = 0x7f7f7f7f;//2139062143
typedef long long ll;
using namespace std;

int a[50010];

int main()
{
int n;
while(scanf("%d",&n) != EOF)
{
int sum = 0;
for(int i=1; i<=n; i++)
{
scanf("%d",&a[i]);
}
for(int i=1; i<=n; i++)
{
int max = a[i];
int min = a[i];
for(int j=i; j<=n; j++)
{
if(a[j] > max)
{
max = a[j];
}
else if(a[j] < min)
{
min = a[j];
}
if(max - min == j - i)
{
sum++;
}
}
}
printf("%d\n",sum);
}
return 0;
}