単調なキュー愚かな質問。
$最大(sumv_ {I} -sumv_ {J})、[IM、I-1] $でjは\:$ I $は回答終了を検討します
($ Sumv_ {I} $プレフィックスと)
わずかに実際に係合し、これは固定されている$のsumv_ {I} $を発見しました。
私たちは(sumv_ {J})$が可能$分を維持する必要があります。
単調なキューの最適化モーメント、各服用最初のチームがすることができます。
コード:
書式#include <cstdioを> する#include <両端キュー> の#include <アルゴリズム> std名前空間を使用しました。 const int型MAXN = 500000 + 3; const int型INF = -100000000。 長い長いsumv [MAXN]。 両端キュー<整数> Q; INTメイン() { //freopen("in.txt","r",stdin)。 INTのN、M、ANS = INF。 scanf関数( "%d個の%のD"、&N、&M)。 {(; iが<= N I ++ iは1 = INT)のために INT W。 scanf関数( "%のD"、&W)。 sumv [I] = sumv [I-1] + W。 } {(; iが<= N I ++ I = 1 INT)ため INT CUR = I- M。 しばらく(!Q.empty()&& Q.front()<CUR)Q.pop_front(); (しばらく!Q.empty()&& Q.push_back(I); ANS = MAX(ANS、H)。 } のprintf( "%dの"、ANS)。 0を返します。 }