为什么我会MLE

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
int a[30001]={0};
const double g=0.6180339887498949;
using namespace std;
int b1,b2;
double maxi=233333333;
int huang(int n,int l,int r){
if(l==r){
double h=(double)a[l]/a[n]-g;
if(abs(h)<maxi){
b1=n;
b2=l;
}
return 0;
}
while(l<r){
int k=(l+r)/2;
double f=((double)a[k]/a[n]-g);
if(f>=0){
if(f<maxi){
b1=n;
b2=k;
maxi=f;
}
huang(n,l,k);
return 0;
}
else{
f=-f;
if(f<maxi){
b1=n;
b2=k;
maxi=f;
}
huang(n,k,r);
return 0;
}
}
return 0;
}
int main(){
int n;
int i;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+1+n);
for(i=1;i<n;i++){
if(a[i]==0) continue;
int l=i+1,r=n;
if(l!=r) huang(i,l,r);
else{
double h=(double)a[n]/a[i]-g;
if(abs(h)<maxi){
b1=i;
b2=n;
}
}
}
cout<<b1<<endl<<b2;
return 0;
}

1 条评论

  • @ 2016-11-13 09:43:17

    后来检查了下,我发现我连题意都读错了,哎,真弱
    但我还是不懂,我为什么会超空间
    orz解答

  • 1

信息

ID
1237
难度
7
分类
其他 | 二分查找 点击显示
标签
递交数
5452
已通过
1050
通过率
19%
被复制
17
上传者