#include #include #include #include using namespace std; #define MAXN 50100 #define MAXH 110 #define MAXVAL_H 100 #define INF 0x3f3f3f3f int dp[2][MAXH]; int bus[MAXH]; int main() { int N,C; while(scanf("%d %d",&N,&C)==2) { /// Main Loop int x; scanf("%d",&x); int index=0; ///由于人无法变矮,因此这部分的花费记为INF for(int i=0;i 大(N) for(int k=0;k<=MAXVAL_H;k++) { int cost=dp[!index][k]-k*C; /// Pop Back while(begin cost) end--; /// Push Back bus[end++]=cost; if(k=0;k--) { int cost=dp[!index][k]+k*C; /// Pop Back while(begin cost) end--; /// Push Back bus[end++]=cost; if(k>=x) { dp[index][k]=min(dp[index][k],bus[begin]-k*C+(k-x)*(k-x)); } } } int ans=INF; for(int i=0;i<=MAXVAL_H;i++) { ans=min(dp[index][i],ans); } printf("%d\n",ans); } return 0; }