#include<iostream>
using namespace std;
double d1,c,d2,a,max_d,ans=0;//a:剩余油量
double p[10],d[10];/*d:距离 p:油价*/
int n;
void move(int now){
int minn=0,minx=600;
for(int i=now+1;i<=n;i++){
if(d[i]-d[now]>max_d){
break;
}
if(p[i]<minx){
minx=p[i];
minn=i;
}
}
if(p[now]<=minx&&(d1-d[now]<max_d)){
ans+=(((d1-d[now])/d2)-a)*p[now];
printf("%.2lf",ans);
return;
}
if(minx==600){
cout<<"No Solution";
return;
}
if(minx>p[now]){
ans+=(c-a)*p[now];
a=c-(d[minn]-d[now])/d2;
}else{
ans+=((d[minn]-d[now])/d2-a)*p[now];
a=0;
}
move(minn);
}
int main(){
cin>>d1>>c>>d2>>p[0]>>n;
d[0]=0;
for(int i=1;i<=n;i++){
cin>>d[i]>>p[i];
}
max_d=c*d2;
for(int i=0;i<=n;i++){
for(int j=i;j<=n;j++){
if(d[j]<d[i]){
swap(d[j],d[i]);
swap(p[j],p[i]);
}
}
}
move(0);
return 0;
}
WA on3,4,早上没人帮调,现在哪位能帮我调? 悬赏所有关注