为什么我的样例总是变紫,自己测试都没问题
查看原帖
为什么我的样例总是变紫,自己测试都没问题
1557051
WyaoCh楼主2024/12/29 19:52
#include <iostream>
#include <cmath>
#include<algorithm>
using namespace std;

struct stu{
	double dn;
	double pn;
}dpn[3000];
bool cmp(stu x,stu y){
	return x.dn<y.dn;
}
bool flag=true;
int main(){
	double d,p,n,cnt=0,c,d1;
	cin>>d1>>c>>d>>p>>n;
	dpn[0].pn=p;
	dpn[int(n)+1].dn=d1;
	for(int i=1;i<=n;i++){
		cin>>dpn[i].dn>>dpn[i].pn;
	}sort(dpn+1,dpn+int(n)+1,cmp);
	for(int i=0;i<=n+1;i++){
		int l=i+1;
		while(c*d>=dpn[l].dn-dpn[i].dn){
			l++;
		}
		if(l==i+1){
			flag=false;
			break;
		}
		double qcnt=cnt;
		for(int j=i+1;j<=l;j++){
			if(dpn[j].pn<dpn[i].pn){
				
				cnt+=(dpn[j].dn-dpn[i].dn)*dpn[i].pn/d;
			
				i=j;
				
			}
			
		}if(qcnt==cnt){
			int minx=5001,idx;
			for(int j=i+1;j<=l;j++){
				if(dpn[j].pn<minx){
					minx=dpn[j].pn;
					idx=j;
				}
			}
			cnt+=(dpn[idx].dn-dpn[i].dn)*dpn[i].pn/d;	
			i=idx;
			
			
		}
		
		
		
		
		
	}if(flag)printf("%.2f",cnt);
	else cout<<"No Solution";
}
2024/12/29 19:52
加载中...