入力:interval.in 出力:interval.out
制限時間:
2000 MSのスペースの制約: 524288キロバイト特定の制限
1つの#include <ビット/ STDC ++ H> 2 使用して 名前空間STDを、 3 の#define MOD十億七 4 の#defineっ長い長い 5 のconst int型 N = 300010 。 6 INT N。 7 INT [N]。 8 int型ANS1、ANS2。 9つの int型ANS [N]。 10 のint main()の 11 { 12 freopenは(" interval.in "、" R " 、STDIN)。 13 freopenは(" interval.out "、" W " 、STDOUT)。 14 のscanf(" %d個"、&N) 15 のために(int型 i = 1 ; iが<= N; iが++ ) 16 のscanf(" %dの"、および[I])。 17 のための(int型のk = 1 ; kは<= N k個++ ) 18 { 19 のint L、R。 20 のための(L = K、L> = 1 ; l-- ) 21 もし(1- == 1 || [1 - 1 ]%[K] =!0 ) 22 ブレーク。 23 のために(; R <= N R ++ R = K ) 24 場合(rは== N [R + || 1!]%[K] = 0 ) 25 ブレーク。 26 であれば(ANS2 <(R - L)) 27 { 28 ANS1 = 1 。 29の ANS [ANS1] = L。 30 ANS2 = R - L。 31 } 32 他 33 { 34 であれば(ANS2 ==(R - L)) 35 { 36 歳[years1 ++] = L。 37 } 38 } 39 } 40 ソート(年齢+ 1、および+ 1 + years1)。 41 年1 =シングル(年+ 1年+ 1 + 1年) - (年+ 1 ); 42 のprintf(" %D%D \ n " 、years1、ANS2)。 43 のためには、(int型 i = 1 ; iが= years1を<; I ++) 44 のprintf(" %dの" 、ANS [I])。 45 リターン 0 ; 46 }