wa了第一个测试点
查看原帖
wa了第一个测试点
818377
castal_楼主2023/1/10 00:55

大佬们,问问这个代码为什么wa了第一个测试点

#include <bits/stdc++.h>
using namespace std;

const int N = 1010;
pair<double,double> p[N];

int k;

bool cmp(pair<double, double>a, pair<double, double>b)
{
    return double(a.second/a.first) > double(b.second/b.first);
} 
int main()
{
	int n;
	double t;
	cin>>n>>t;
	double sum=0,sum1=0;
	for(int i=0;i<n;i++)
	{
		double x,y;
		cin>>x>>y;
		sum1+=x;
		p[i].first=x;
		p[i].second=y;
	}
	sort(p,p+n,cmp);
	if(t >= sum1) printf("%.2lf",sum1);
	else 
	{
	for(int i=0;i<n;i++)
	{
		k=i;
		if(t < p[i].first) break;
		sum+=p[i].second;
		t-=p[i].first;
	}
	if( k < n && t >= 0) sum+=(double)(p[k].second/p[k].first)*(double)(t*1.0);
	}
	printf("%.2lf",sum);
	return 0;
 }
2023/1/10 00:55
加载中...