分析
コード
#include <ビット/ STDC ++ H>
使用して 名前空間STDを、
#defineは長いlong int型
のconst int型 INF = 1E9 + 7 。
INT [F 160 ] [ 160 ]、S [ 160 ]、P [ 160 ]、V [ 160 ]。
署名されたメイン(){
int型N、M、I、J、K、A、B。
scanf関数(" %LLD%LLD%LLD "、&N、&A、&B);
用(i = 1 ; iが<= N; iは++)のscanf(" %のLLDの%のLLD "、&P [i]は、&V [I])。
以下のための(I = N; I> 0; I - )、S [I] = sの[I + 1 ] + V [i]は、
用(i = 0 ; iが<= V [n]は、iは++)F [N] [I] = - INF。
ため(I = V [N] + 1 F [n]は[I] =; iは++; iが= Sで[N]を<)INF。
以下のための(iは= N- 1、I> 0 ; i-- )
のための(j = 0 ; J <=のS [i]は、J ++ ){
場合(V [i]が> = J)F [i]は[J] = - infファイル。
他 [I] [J] = F - (F [I + 1 ] [S [i]が-j + 1 ] - 1) - のP [I]。
INT RES = MAX(1LL、[I + F 1 [J] + P [I] +] 1);
もし(J <= sで[I + 1 ] && F [I] [J]> RES)[I] [J] = FをRES。
}
INT アンスと、
用(i = 0 ; iが<=のS [ 1 ]; iは++ )
場合(AB> = F [ 1 ] [i])と回答= I。
他に 休憩;
COUT <<回答<< ' ' << S [ 1 ] -Ans << ENDL。
リターン 0 ;
}