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>
#include<queue>
#include<cstring>
int a,b,i,j,k,m,X,Y,p=1,q=2,T1[100002],T2[100002];
long double H,x[100001],y[100001];
long double com(int ii,int jj)
{
return (H-x[ii]-x[jj])/(y[ii]+y[jj])*y[ii]*y[jj];
}
main()
{
scanf("%d",&a);
for(i=1;i<=a;i++)
{
scanf("%Lf",&x[i]);
H+=x[i];
}
for(j=1;j<=a;j++)
{
scanf("%Lf",&y[j]);
if(m<y[j])m=y[j];
}
if(a<=1000)
{
for(i=1;i<=a;i++)
{
for(j=i+1;j<=a;j++)
{
if(com(i,j)<com(p,q))p=i,q=j;
}
}
printf("%d %d",p,q);
}
else
{
for(i=1;i<=a;i++)
{
if(T1[(int)y[i]]==0)
{
T1[(int)y[i]]=i;
}
else
{
if(x[i]>=x[T1[(int)y[i]]])
{
T2[(int)y[i]]=T1[(int)y[i]];
T1[(int)y[i]]=i;
}
else if(T2[(int)y[i]]==0)T2[(int)y[i]]=i;
else if(x[i]>=x[T2[(int)y[i]]])
{
T2[(int)y[i]]=i;
}
}
}
for(i=1;i<=m;i++)
{
if(T1[i]!=0&&T2[i]!=0&&com(T1[i],T2[i])<com(p,q))p=T1[i],q=T2[i];
for(j=i+1;j<=m;j++)
{
if(T1[i]!=0&&T1[j]!=0&&com(T1[i],T1[j])<com(p,q))p=T1[i],q=T1[j];
}
}
if(p>q)printf("%d %d",q,p);
else printf("%d %d",p,q);
}
}
# | 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... |