50pts求调
查看原帖
50pts求调
1075989
BlauAnthony楼主2024/12/22 12:46

code:

#include<iostream>
#include<iomanip>
using namespace std;
int main(){
	double d1,c,d2,p;int n;
	cin>>d1>>c>>d2>>p>>n;
	pair<double,double> l[n+1];
	l[0].first=0;l[0].second=p;
	for(int i=1;i<=n;i++)cin>>l[i].first>>l[i].second;
	double all=0,now=0;int zd=0;
	if(now>c){cout<<"No Solution";return 0;}
	for(int i=0;i<n;i++){
		if(l[i].second<=l[zd].second||now+(l[i+1].first-l[i].first)/d2>c){
			all+=now*l[zd].second;
			now=(l[i+1].first-l[i].first)/d2;
            if(now>c){cout<<"No Solution";return 0;}
            zd=i;
		}else{
            now+=(l[i+1].first-l[i].first)/d2;
        }
	}
    if(l[n].second<=l[zd].second||now+(d1-l[n].first)/d2>c){
		all+=now*l[zd].second;
		now=(d1-l[n].first)/d2;
        if(now>c){cout<<"No Solution";return 0;}
		all+=now*l[n].second;
	}else{
        now+=(d1-l[n].first)/d2;
        all+=now*l[zd].second;
    }
    if(all/0.001>=5)all+=0.01;
    all/=0.01;all=double(int(all));all*=0.01;
	cout<<all<<endl;
	return 0;
}
2024/12/22 12:46
加载中...