题目中提到了排列,所以这个数据是重复的,故判断是否是连号区间只需要
$$Max - Min == r - l$$
即可
#include <bits/stdc++.h>
using namespace std;
const int N = 1e4 + 10;
int a[N];
int n, ans;
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i ++) scanf("%d", &a[i]);
for (int i = 1; i <= n; i ++) {
int l = a[i], r = a[i];
for (int j = i; j <= n; j ++) {
l = min(l, a[j]);
r = max(r, a[j]);
if (r - l == j - i) ans ++;
}
}
printf("%d", ans);
return 0;
}