問題の説明
連続Nを読み出す(0 <N <1,000,000)整数(< = 2 × 10 9
)、多くの時間が表示されますどのように各カウントの計算。
サンプル入力
10
10 30 20 1 1 30 30 20 2 1
サンプル出力
1 1 1 1 2 2 3 2 1 3
制限事項と規則
制限時間:1秒
スペースの制約:128メガバイト
書式#include <cstdioを> する#include <cmath> 使用して 名前空間はstdを、 整数 P = 1000007 [ 1000001 ] = { 0 }、最初の[ 1000008 ] = { 0 }、[次1000001 noat]、[ 1000001 ]。 INT のmain() { int型のn; scanf関数(" %のD "、&N) 以下のために(int型 i = 1 ; iが++; iが<= N ) { BOOL =見出さ偽。 scanf関数(" %dの"& [I]); int型、S = A [i]の%のP; のための(INT J =最初の[S];> J 0、J = 次の[J]) { 場合([I] == A [ J]) { 見出さ = 真; noat [I] = noat [J] + 1 ; noat [J] ++ ; ブレーク; } } 場合(==見出さ偽){次の[I] =最初の[S];最初の[S] = I;} のprintf(" %dの"、noat [i]は+ 1 ); } 戻り 0 ; }