部隊中共有N個士兵,每個士兵有各自的能力指數Xi,在一次演練中,指揮部確定了M個需要防守的地點,按重要程度從低到高排序,依次以數字1到M標注每個地點的重要程度,指揮部將選擇M個士兵依次進入指定地點進行防守任務,能力指數為X的士兵防守重要程度為Y的地點將得到X*Y的參考指數。現在士兵們排成一排,請你選擇出連續的M個士兵依次參加防守,使得總的參考指數值最大。
輸入包含多組數據。<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+yuTI67Xa0rvQ0NPQwb249tX7yv1OLE0oMTw9Tjw9MTAwMDAwMKOsMTw9TTw9MTAwMCkstdq2/tDQTrj21fvK/bHtyr7Dv7j2yr+x+LbU06a1xMTcwabWuMr9WGmjqDE8PVhpPD0xMDAwo6mhozwvcD4KPHA+ttTT2jMwJbXEyv2+3TE8PU08PU48PTEwMDChozwvcD4KCjxoMj48aW1nIHNyYz0="https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017012114355784.gif" alt="\"> Output
輸出一個整數,為最大的參考指數總和。
#includeint ans[1000005],dp[1000005],a[1000005],n,m,max; int main() { int k; while(scanf("%d%d",&n,&m)>0) { max=0; k=0; ans[0]=0; dp[0]=0; for(int i=1; i<=n;i++) { scanf("%d",&a[i]); if(i<=m) { ans[k]+=a[i]; dp[k]+=i*a[i]; max=dp[k]; } else { k++; ans[k]=ans[k-1]-a[i-m]+a[i]; dp[k]=dp[k-1]-ans[k-1]+a[i]*m; if(max