蒟蒻刚学c++第二天求助 为什么会死循环
#include<bits/stdc++.h>
using namespace std;
float cost,D1,D2,C,P,N;//总花费,总距离,每升油能跑的距离,油箱容积,出发点每升油价格,油站数量
int maxn=510;
struct youzhan{
float distance,price;
}a[510];
int now=0;
int main(){
cin>>D1>>C>>D2>>P>>N;
a[0].distance=0;a[0].price=P;
for(int i=1;i<=N;i++){
cin>>a[i].distance>>a[i].price;
if(i==N) a[i+1].distance=D1;a[i+1].price=0;
}
while(1){
float cheap=a[now].price,near;
for(int i=now;a[i].distance<=C*D2;i++){
if(i==0) i++;
if(cheap>a[i].price){
cheap=a[i].price;
near=a[i].distance;
}
}
if(cheap==a[now].price){
cheap=1e7;
for(int i=now;a[i].distance<=C*D2;i++){
if(i==0) i++;
if(cheap>a[i].price){
cheap=a[i].price;
near=a[i].distance;
}
}
}
if(cheap==1e7){
cout<<"No Solution"<<endl;
return 0;
}
cost+=(near/D2)*a[now].price;now=near;
if(near==N) break;
}
printf("%.2f",cost);
return 0;
}