为什么最后只会输出0啊
我中间调试的时候都可以正常二分,但是为什么最后ans是0啊
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=2e5+5;
int n;
long double ans;
struct node{
int x,y,s;
}pos[N];
bool check(long double mid)
{
long double sum=0;
for(int i=1;i<=n;i++)
{
sum+=(long double)pos[i].s/mid;
if(sum>pos[i].y) return false;
if(sum<pos[i].x) sum=pos[i].x;
}
return true;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d%d",&pos[i].x,&pos[i].y,&pos[i].s);
}
long double l=0,r=1e9;
while(r-l>=0.00001)
{
long double mid=(l+r)/2;
if(check(mid))
{
r=mid;
ans=mid;
// printf("%lf\n",ans);
}
else l=mid;
}
printf("%.2lf",ans);
return 0;
}