제출 #14348

#제출 시각아이디문제언어결과실행 시간메모리
14348cometBe Two Bees (OJUZ10_b2b)C++98
0 / 100
79 ms4324 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n;
ll sum,H[111111];
double T[111111],a[111111];
bool check(double k){
    for(int i=0;i<n;i++)a[i]=H[i]+k*T[i];
    double ret=0;
    double* t=max_element(a,a+n);
    ret+=*t;
    *t=-1e18;
    t=max_element(a,a+n);
    ret+=*t;
    return ret>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("%lld",&H[i]);
		sum+=H[i];
    }
    for(int i=0;i<n;i++){
        scanf("%lf",&T[i]);
		T[i]=(double)1/T[i];
    }
    double lo=0,hi=1e15,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...