第五个过不去,求助大佬
#include<bits/stdc++.h>
using namespace std;
double d1;//两个城市之间的距离
double c;//汽车油箱的容量
double d2;//每升汽油能行驶的距离
double p;//出发点每升汽油价格
int n;//沿途油站数油站
double di[10000];//离出发点的距离
double pi[10000];//每升汽油价格
double yjy;
double gwx;
double s;//剩下的
int main(){
cin >> d1 >> c>> d2 >> p >> n;
for(int i=1;i<=n;i++){
cin >> di[i] >> pi[i];
}
di[n+1]=d1;//目的地
pi[0]=p;
gwx=d2*c;
int m,q;//后面有用
int j;
for(int i=1;i<=n;i++){
if(di[i+1]-di[i]>gwx){
cout << "No Solution";
return 0;
}
}
for(int i=0;i<=n;i=j){//所在加油站
for(j=i+1;j<=n+1;j++){//下一个加油站
if(di[j]-di[i]>gwx){
j--;
break;
}
if(pi[j]<pi[i]){
m=j;
q=i;
break;//如果更便宜就退出
}
}
if(pi[m]<pi[q]){//已经排除了所有到达不了的情况,直接if就可以
yjy+=((di[m]-di[q])/d2-s)*pi[q];
s = 0;
}else{
yjy+=(c-s)*pi[q];
s=c-(di[m]-di[q])/d2;
}
}
printf("%.2lf",yjy);
return 0;
}