削除されたユニークなサブセグメントの各要素を満たすための要件を除去するための連続サブセグメントのシーケンス所与
ほとんどの子供のための長さ
列挙開始点、長さの二つの分子
再びユニークでソートすることを忘れないでください
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 #defineは長いlong int型 の#define SIが署名 の#define ENDLを'\ n' の#define SC(X)のscanf( "%I64d"、&x)は、 #define読み出す(A)のための(INT I = 1; I <= N; iは++)scanf関数を( "%I64d"、&A [I])。 #define P対<整数、整数> の#define Fiの第一 の#define SE第二 の#define OT(X)COUT << X << 'の\ n'; #define MAXN 10000 + 5 INT A [MAXN]。 int型、N、T、X、Y、B。 ベクトル < int型 > V。 INT MID) { v.clear()。 以下のために(int型 i = 1 ; iが<= N; iは++ ){ 場合(iは< l)をv.push_backを([I])。 それ以外の 場合(I> 中旬)v.push_back(A [i])と、 他の I = ミッド; } ソート(v.begin()、v.end())。 INT、N =ユニーク(v.begin()、v.end()) - v.begin()。 戻り N == )(v.sizeします。 } ()主符号付き { SC(N)。 以下のために(int型 i = 1 ; iが<= N; iは++ ){ SC([I])。 v.push_back([I])。 } ソート(v.begin()、v.end())。 INT X =ユニーク(v.begin()、v.end()) - v.begin()。 もし(x == N){ COUT << 0 << ' の\ n ' ; リターン 0 ; } INT LEN = N。 以下のために(int型 i = 1 ; iが<= N; iは++ ){ int型 L = I、R = I + len- 1 。 もし(チェック(I、R)!)続けます。 一方、(L + 1 <R){ int型ミッド=(L + R)/ 2; もし(チェック(I、MID)){ R = ミッド。 } 他 L =ミッド+ 1 。 } であれば(チェック(I、L)){ LEN =分(L-I + 1 、LEN)。 } そう であれば(チェック(I、R)){ LEN =分(R-I + 1 、LEN)。 } } COUT << lenの<< ' の\ n ' ; }