- 隐形的翅膀
- 2016-11-13 09:07:59 @
#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 条评论
-
炸炸炸 LV 8 @ 2016-11-13 09:43:17
后来检查了下,我发现我连题意都读错了,哎,真弱
但我还是不懂,我为什么会超空间
orz解答
- 1