連番区間数(ブルーブリッジ13年B組題)

1107 ワード

明ちゃんはここ数日、このような奇妙で面白い問題を考えています.
1~Nのある全配列の中で何個の連番区間がありますか?ここでいう連番区間の定義は、
区間[L,R]内のすべての要素(すなわち、この配列のL番目からR番目の要素)をインクリメントして並べ替えると、R−L+1の長さの「連続」数列が得られる場合、この区間連番区間と呼ぶ.
Nが小さいとき、明ちゃんはすぐに答えを出すことができますが、Nが大きくなると、問題はそんなに簡単ではありません.今、明ちゃんはあなたの助けが必要です.
入力形式:
1行目は正の整数N(1<=N<=50000)であり、全配列の規模を表す.
2行目はN個の異なる数字Pi(1<=Pi<=N)であり、このN個の数字のある全配列を表す.
出力フォーマット:
異なる連番区間の数を表す整数を出力します.
 
例:
ユーザー入力:
4
3 2 4 1
プログラムの出力:
7
 
ユーザー入力:
5
3 4 2 5 1
プログラムの出力:
9
 
説明:
第1の使用例では、7つの連番区間が、それぞれ、[1,1],[1,2],[1,3],[1,3],[1,4],[2,2],[3,3],[4,4]である.
第2の使用例では、9つの連番区間は、それぞれ、[1,1],[1,2],[1,3],[1,4],[1,4],[1,5],[2,2],[3,3],[4,4],[5]である.
生産資源約定:
ピークメモリ消費量
CPU消費
はい、最初はテーマが読めなかったことを認めます.のこれからは気をつけてください.
#include 
void main()
{
	int n,max,min,count=0;
	cin>>n;
	int *a=new int[n];
	for(int i=0;i>a[i];
	for(i=0;imax) max=a[j];
			else if(a[j]