不加 41 行就 RE 了,为什么?
#include<bits/stdc++.h>
using namespace std;
const int maxn=30;
int sg[maxn+10],a[maxn+10];
int main(){
ios::sync_with_stdio(0),cin.tie(0);
for(int i=1;i<maxn;++i){
int flg[maxn+10];
memset(flg,0,sizeof flg);
for(int j=i-1;j>=0;--j){
for(int k=j;k>=0;--k){
flg[sg[j]^sg[k]]=1;
}
}
int m=0;
while(flg[m])m++;
sg[i]=m;
}
int t;cin>>t;
while(t--){
int n,ans=0;cin>>n;
for(int i=1;i<=n;++i) {
cin>>a[i];
if(a[i]&1)ans^=sg[n-i];
}
if(!ans)cout<<"-1 -1 -1\n0\n";
else {
int aa=99,bb=0,cc=0,cnt=0;
for(int i=n-1;i>0;--i){
if(!a[i])continue;
for(int j=i-1;j>=0;--j)
for(int k=j;k>=0;--k)
if(!(ans^sg[i]^sg[j]^sg[k])){
cnt++;
if(aa==99)aa=i,bb=j,cc=k;
}
}
cout<<n-aa-1<<" "<<n-bb-1<<" "<<n-cc-1<<"\n"<<cnt<<"\n";
}
}
exit(0);
return 0;
}