This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
int n;
int h[100005], u[100005];
long long S;
double tmp[100005];
int r1, r2;
bool trial(double t){
    for (int i=0; i<n; i++) {
        tmp[i] = h[i] + t / u[i];
    }
    double ret = 0;
    auto *pt = max_element(tmp,tmp+n);
    ret += *pt;
    r1 = (int)(pt - tmp) + 1;
    *pt = -1e18;
    pt = max_element(tmp,tmp+n);
    ret += *pt;
    r2 = (int)(pt - tmp) + 1;
    return ret >= S;
}
int main(){
    scanf("%d",&n);
    for (int i=0; i<n; i++) {
        scanf("%d",&h[i]);
        S += h[i];
    }
    for (int i=0; i<n; i++) {
        scanf("%d",&u[i]);
    }
    double s = 0, e = 1e18;
    for (int i=0; i<200; i++) {
        double m = (s+e)/2;
        if(trial(m)) e = m;
        else s = m;
    }
    printf("%d %d",min(r1,r2),max(r1,r2));
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |