Submission #14347

#TimeUsernameProblemLanguageResultExecution timeMemory
14347gs14004Be Two Bees (OJUZ10_b2b)C++14
0 / 100
825 ms3688 KiB
#include<cstdio>
#include <algorithm>

using namespace std;
int n;
double sum,H[111111],T[111111],a[111111];
bool check(double k){
    for(int i=0;i<n;i++)a[i]=H[i]+k*T[i];
    sort(a,a+n);
    double ret=0;
    for(int i=0;i<n-2;i++)ret+=a[i];
    return ret<k*sum;
}
void output(double k){
    double Max=0;
    int v,v2;
    for(int i=0;i<n;i++)a[i]=H[i]+k*T[i];
    for(int i=0;i<n;i++){
        if(Max<a[i]){
            Max=a[i];
            v=i;
        }
    }
    Max=0;
    for(int i=0;i<n;i++){
        if(Max<a[i]&&i!=v){
            Max=a[i];
            v2=i;
        }
    }
    printf("%d %d\n",v+1,v2+1);
}
int main(){
    scanf("%d",&n);
    int x,y,z;
    for(int i=0;i<n;i++)scanf("%lf",&H[i]);
    for(int i=0;i<n;i++){
        scanf("%lf",&T[i]);
        T[i]=(double)1/T[i];
        sum+=H[i];
    }
    double lo=0,hi=1e16,mid;
    for(int i=0;i<80;i++){
        mid=(lo+hi)/2;
        if(check(mid)){
            hi=mid;
        }
        else{
            lo=mid;
        }
        //printf("%f %f\n",hi,lo);
    }
    output(lo);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...