#include<iostream>
#include<string>
using namespace std;
int main()
{
double D1,C,D2,P;
int N;
cin>>D1>>C>>D2>>P>>N;
double *value=new double[N+2]();
double *over=new double[N+2]();
double *way=new double[N+2]();
value[0]=P;way[0]=0;
double MAX=C*D2;
bool flag=false;
for(int i=1;i<=N;i++)
{
cin>>way[i]>>value[i];
if(way[i]-way[i-1]>MAX)
flag=true;
}
if(flag)
{
cout<<"No Solution";
return 0;
}
way[N+1]=D1;
int i=0,j=1;
double cost=0;
while(i!=N+1)
{
double s=0;
while((s<=MAX)&&(j<=N)&&(value[i]<=value[j]))
{
j++;s=s+way[j]-way[j-1];
}
if(s<=MAX)
{
if(over[i]>=way[j]-way[i])
over[j]=over[i]-way[j]+way[i];
else
{
cost+=(way[j]-way[i]-over[i])/D2*value[i];
over[j]=0;
}
}
else
{
cost=cost+(MAX-over[i])/D2*value[i];
j=i+1;
over[j]=MAX-(way[j]-way[i]);
}
i=j;
}
printf("%.2lf",cost);
return 0;
}
相关文章: