#include <bits/stdc++.h>
using namespace std;
double d1,c,d2,ds[10],ps[10],curoil=0,curdis=0,capdis,ans=0;
int n;
int main(void) {
cin>>d1>>c>>d2>>ps[0]>>n;
ds[n+1]=d1,ps[n+1]=0;
for(int i=1;i<=n;i++) scanf("%lf %lf",&ds[i],&ps[i]);
int i=0,j;
while(i<=n) {
curdis=0;
capdis=c*d2;
for(j=i+1;j<=n+1;j++) {
curdis+=ds[j]-ds[j-1];
if(curdis>capdis) break;
if(ps[j]<=ps[i]) break;
}
if(curdis>capdis&&j==i+1) {
printf("No Solution");
return 0;
}
else if(curdis>capdis) ans+=(c-curoil)*ps[i],curoil=c-(ds[j-1]-ds[i])/d2,i=j-1;
else ans+=(ds[j]-ds[i])/d2*ps[i],curoil=0,i=j;
}
printf("%.2lf",ans);
return 0;
}
为什么不对呢