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<stdio.h>
#include<algorithm>
using namespace std;
struct a1 {
long long h, t;
int ix;
bool operator< (const a1& c) const {
if(h!=c.h)return h>c.h;
return t<c.t;
}
}ba1[100100];
struct a2 {
long long h, t;
int ix;
bool operator< (const a2& c) const {
if(t!=c.t)return t<c.t;
return h>c.h;
}
}ba2[100100];
int n, da, db;
long long sum, hi[100100], ti[100100];
double dap;
double pick(int a, int b){
double honey=sum-hi[a]-hi[b];
double til=(1.0/ti[a])+(1.0/ti[b]);
return honey/til;
}
int main(){
int i, j;
scanf("%d", &n);
for(i=0; i<n; i++)scanf("%lld", &hi[i]), sum+=hi[i];
for(i=0; i<n; i++)scanf("%lld", &ti[i]);
for(i=0; i<n; i++){
ba1[i].ix=ba2[i].ix=i;
ba1[i].h=ba2[i].h=hi[i];
ba1[i].t=ba2[i].t=ti[i];
}
sort(ba1,ba1+n);
sort(ba2,ba2+n);
da=0, db=1, dap=pick(0,1);
for(i=0; i<2; i++){
for(j=0; j<2; j++){
if(ba1[i].ix != ba2[j].ix){
double gap=pick(ba1[i].ix, ba2[j].ix);
if(dap>gap)dap=gap, da=ba1[i].ix, db=ba2[j].ix;
}
if(ba1[i].ix != ba1[j].ix){
double gap=pick(ba1[i].ix, ba1[j].ix);
if(dap>gap)dap=gap, da=ba1[i].ix, db=ba1[j].ix;
}
if(ba2[i].ix != ba2[j].ix){
double gap=pick(ba2[i].ix, ba2[j].ix);
if(dap>gap)dap=gap, da=ba2[i].ix, db=ba2[j].ix;
}
}
}
if(da>db)swap(da,db);
printf("%d %d", da+1, db+1);
return 0;
}
# | 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... |