Description:
Accept:
#include <iostream>
#include<algorithm>
using namespace std;
const int maxn=1e5+10;
struct N{
int i;
int val;
N()
{
i=0, val=0;
}
bool operator<(N &b)
{
return val<b.val;
}
};
N f[maxn];
int main()
{
int len;
cin>>len;
for(int i=0;i<len;i++)
{
cin>>f[i].val;
f[i].i=i;
}
sort(f, f+len);
int low=0, high=len-1, sum, res=0x3f3f3f, f1=0, f2=len-1, tmp;
while(low<high)
{
sum=f[high].val+f[low].val;
if(res>abs(sum)||(res==abs(sum)&&f[low].i+f[high].i<f1+f2))
{
res=abs(sum);
f1=f[low].i;
f2=f[high].i;
}
if(sum>0)
{
high--;
}
else if(sum<0)
{
low++;
}
else
{
if(f[low].i<f[high].i)
{
high--;
}
else
{
low++;
}
}
//cout<<low<<" "<<high<<endl;
}
//cout<<endl;
if(f1>f2)
swap(f1,f2);
cout<<f1+1<<" "<<f2+1<<endl;
return 0;
}