不明白怎么没的,有没有大佬出组数据
#include <bits/stdc++.h>
using namespace std;
int n,a[10000],t,maxa,mina,maxnum,minnum,zheng,fu,zero;
int main()
{
scanf("%d",&t);
while(t--){
maxa=-1e9,mina=1e9;
zheng=fu=zero=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
if(a[i]>maxa) maxa=a[i],maxnum=i;
if(a[i]<mina) mina=a[i],minnum=i;
if(a[i]>0) zheng++;
else if(a[i]<=0 ) fu++;
else zero++;
}
if(maxa==mina) {
cout<<"0"<<endl;
continue;
}
if(abs(zheng-fu)<=5)
{
if(abs(mina)>abs(maxa))
{
cout<<zheng+n-1<<endl;
for(int i=1;i<=n;i++)
if(a[i]>0)
cout<<i<<" "<<minnum<<endl;
for(int i=n-1;i>=1;i--)
cout<<i<<" "<<i+1<<endl;
}
else {
cout<<fu+n-1<<endl;
for(int i=1;i<=n;i++)
if(a[i]<0)
cout<<i<<" "<<maxnum<<endl;
for(int i=2;i<=n;i++)
cout<<i<<" "<<i-1<<endl;
}
}
else{
int maxshu=max(zheng,fu);
if(zheng>fu) {
cout<<n-1+5+fu;
for(int i=1;i<=5;i++) cout<<maxnum<<" "<<maxnum<<endl;
for(int i=1;i<=n;i++) if(a[i]<0) cout<<i<<" "<<maxnum<<endl;
for(int i=2;i<=n;i++) cout<<i<<" "<<i-1<<endl;
}
if(zheng<fu) {
cout<<n-1+5+zheng;
for(int i=1;i<=5;i++) cout<<minnum<<" "<<minnum<<endl;
for(int i=1;i<=n;i++) if(a[i]>0) cout<<i<<" "<<minnum<<endl;
for(int i=n-1;i>=1;i--) cout<<i<<" "<<i+1<<endl;
}
}
}
return 0;
}