ブルーブリッジカップゼンティ-インターバルナンバー

タイトル説明

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;
}

おすすめ

転載: blog.csdn.net/m0_51955470/article/details/113802576