#include<bits/stdc++.h>
using namespace std;
#define mkp make_pair
double mx,d,mn;
int n;
double l[100010],c[100010],ll;
double ans,now,nowl;
priority_queue<pair<double,double>,vector<pair<double,double> >,greater<pair<double,double> > >q;
int main()
{
cin>>ll>>mx>>d>>c[0]>>n;
l[n+1]=ll;
for(int i=1;i<=n;i++){
cin>>l[i]>>c[i];
}
for(int i=0;i<=n;i++){
while(!q.empty()&&q.top().first>c[i]){
now-=q.top().first;
q.pop();
}
q.push(mkp(c[i],mx-now));
now=mx;
while(!q.empty()&&nowl<l[i+1]){
pair<double,double>p=q.top();
q.pop();
if(p.second*d+nowl>l[i+1]){
double k=1.0*(l[i+1]-nowl)/d;
p.second-=k;
// cout<<p.first<<' '<<k<<endl;
ans+=1.0*k*p.first;
now-=k;
q.push(p);
nowl=l[i+1];
break;
}else{
nowl+=1.0*p.second*d;
now-=p.second;
// cout<<p.first<<' '<<p.second<<endl;
ans+=1.0*p.first*p.second;
}
}
if(nowl<l[i+1]){
cout<<"No Solution";
return 0;
}
cout<<ans<<endl;
}
cout<<fixed<<setprecision(2)<<ans;
return 0;
}
一直75pts过不去