调傻了
#include<bits/stdc++.h>
using namespace std;
int n,m,i,j;
double d1,d2,c,p1,d[10],p[10],ans=10000000000.00,C[10],PR[10];
void dfs(int k,double you,double zhi){
if(k>n){
ans=min(ans,zhi);
return;
}
for(int i=k;i<=n+1;i++){
double geng=you+(d[i]-d[k])/d2;
if(geng*d2<d[k+1]-d[k]) continue;
if(geng>c) continue;
if(k==0) dfs(k+1,geng,zhi+(d[k+1]-d[k])/d2*p1);
if(k!=0) dfs(k+1,geng,zhi+(d[k+1]-d[k])/d2*p[k]);
}
}
int main(){
scanf("%lf%lf%lf%lf%d",&d1,&c,&d2,&p1,&n);
for(i=1;i<=n;i++) scanf("%lf%lf",&d[i],&p[i]);
d[n+1]=d1;
dfs(0,0,0);
if(ans==1000000000.00) printf("No Solution");
else printf("%.2lf",ans);
return 0;
};