一定有答案
如此一来,gcd必然至少会是2
扫描二维码关注公众号,回复:
11339964 查看本文章
#include <bits/stdc++.h>
using namespace std;
const int maxn=2009;
int t,n;
int a[maxn],ji[maxn],ou[maxn],top1,top2;
int main()
{
int t;
cin>>t;
while(t--)
{
top1=top2=0;
cin >> n;
for(int i=1;i<=n*2;i++)
{
cin >> a[i];
if(a[i]%2==0) ou[++top2]=i;
else ji[++top1]=i;
}
if(top1%2==0)
{
if(top2>=2)//偶数多于2,舍弃2个偶数
{
for(int i=4;i<=top2;i+=2) cout<<ou[i-1]<<" "<<ou[i]<<endl;
for(int i=2;i<=top1;i+=2) cout<<ji[i-1]<<" "<<ji[i]<<endl;
}
else//奇数多于2,舍弃2个奇数
{
for(int i=4;i<=top1;i+=2) cout<<ji[i-1]<<" "<<ji[i]<<endl;
for(int i=2;i<=top2;i+=2) cout<<ou[i-1]<<" "<<ou[i]<<endl;
}
}
else//舍弃一奇一偶
{
for(int i=3;i<=top1;i+=2) cout<<ji[i-1]<<" "<<ji[i]<<endl;
for(int i=3;i<=top2;i+=2) cout<<ou[i-1]<<" "<<ou[i]<<endl;
}
}
}