タイトル説明
Xiao Mingは最近、このような奇妙で興味深い質問について考えてい
ます。1からNまでの特定の完全な配置には、連続する間隔がいくつありますか。ここで言及されている連続間隔の定義は次のとおりです。
間隔[L、R]内のすべての要素(つまり、この配置のL番目からR番目の要素)が昇順で並べ替えられた場合、R-L +1の長さは次のようになります。 「連続」シーケンスは、この間隔連続番号間隔と呼ばれます。
Nが非常に小さい場合、Xiao Mingは答えをすばやく計算できますが、Nが大きくなると、問題はそれほど単純ではありません。XiaoMingはあなたの助けを必要としています。
入る
最初の行は正の整数N(1 <= N <= 50000)で、配列全体のスケールを表します。
2行目は、N個の異なる数Pi(1 <= Pi <= N)であり、これらのN個の数の特定の順列を表します。
出力
異なる連続する間隔の数を表す整数を出力します。
サンプル入力
4
3 2 4 1
サンプル出力
7
コードは次のように表示されます。
#include <iostream>
using namespace std;
const int N = 10010, INF = 100000000;
int a[N], n;
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int res = 0;
for (int i = 0; i < n; i++) {
int mins = INF, maxs = -INF;
for (int j = i; j < n; j++) {
mins = min(mins, a[j]);
maxs = max(maxs, a[j]);
if (maxs - mins == j - i) {
res++;
}
}
}
cout << res << endl;
return 0;
}