単調減少範囲を維持するためのキューに、キューの先頭には、間隔の単調な最大値です。
チームへの番号の前に数がチームにフロントのいくつかを説明するために、後方の数よりも小さい場合なので答えには影響しません。
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 INT Q [ 2000010 ]。 INT [ 2000010 ]。 int型 B [ 2000010 ]。 int型の ANS [ 2000010 ]。 INT のmain() { int型N、K。 CIN >> N >> K。 以下のために(int型 i = 1 ; iが<= N; iが++ ){ scanf関数(" %dを"&[I])。 } INT H = 1、T = 0 。 以下のために(int型私= 1 ; iが<= N; iが++ ){ 一方(B [H] + K- 1 <I && H <= T)++ H。 一方、([I]> Q [t]は&& H <= T) - T。 B [ ++ T] = I。 Q [t]は = [I]を、 ANS [I] = Q [H]。 } のために(int型 I = kは、iが++; iが<= N ){ COUT << ANS [I] << ENDL。 } }