#include #include #include #include using namespace std; const int range=100; const int max_n=40; const double max_num=1e+20; double opt[range+1][max_n+1][max_n+1]; int fiopt[range+1][max_n+1][max_n+1],fkopt[range+1][max_n+1][max_n+1]; double s[range+1][range+1][max_n+1]; int fs[range+1][range+1][max_n+1]; double a,b,c,d; double k1,k2; int m,n; /* inline int MIN(int a,int b) { return ab?a:b; } */ void input_data() { ifstream fin("hut.in"); fin>>k1>>k2>>m>>n; fin.close(); } double f1(int x) { return k1*x; } double f2(int x) { return k2*x; } double area1(int i,int j) { return (j-i)*(f1(j)-f1(i)); } double area2(int i,int j) { return (j-i)*(f2(j)-f2(i)); } void solve() { int i,j,k,i1,j1,p,delta; double temp; //initialize for (i=0; i<=range; i++) { for (j=0; j<=range; j++) { for (k=0; k<=n; k++) { s[i][j][k]=max_num; fs[i][j][k]=0; } } } for (i=0; i<=range; i++) { s[i][i][0]=0; fs[i][i][0]=i; } for (delta=1; delta<=range; delta++) { for (i=0; i<=range-delta; i++) { j=i+delta; for (k=1; k<=n; k++) { for (j1=i; j1<=j; j1++) { temp=s[i][j1][k-1]+area2(j1,j); if (tempi || k>i) continue; for (i1=0; i1<=i-1; i1++) { for (p=1; p<=k; p++) { temp=opt[i1][j-1][k-p]+s[i1][i][p]; if (tempi) { if (j