#include #include #include #include using namespace std; #define inf 0xfffffff #define min(a,b) ab?a:b int dp[2][101]; int n,c; int q[101]; int head,tail,cur; int main() { int i,j,x,nowf; //freopen("D:\\in.txt","r",stdin); while(scanf("%d%d",&n,&c)==2) { scanf("%d",&x); cur=0; for(i=0;inowf) tail--; q[tail++]=nowf; if(j=0;j--) //当身高为j时候,队列里便已经保存了100~j+1的信息,正写反写是有技巧的 { nowf=dp[1-cur][j]+j*c; while(headnowf) tail--; q[tail++]=nowf; if(j>=x) dp[cur][j]=min(dp[cur][j],q[head]-j*c+(x-j)*(x-j)); } } int ans=inf; for(i=0;i<=100;i++) ans=min(ans,dp[cur][i]); printf("%d\n",ans); } return 0; }