比赛 |
“Asm.Def战记之拉格朗日点”杯 |
评测结果 |
AAAAAATATT |
题目名称 |
Asm.Def的微小贡献 |
最终得分 |
70 |
用户昵称 |
WAHT |
运行时间 |
15.013 s |
代码语言 |
C++ |
内存使用 |
0.34 MiB |
提交时间 |
2015-11-04 10:47:53 |
显示代码纯文本
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cstdlib>
#include<cmath>
using namespace std;
#define ll long long
ll read()
{
ll x=0,f=1;
char ch=getchar();
while(ch>'9'||ch<'0'){ if(ch=='-') f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){ x=x*10+ch-'0';ch=getchar();}
return x*f;
}
int n;
ll a[1100];
struct my
{
ll value,node;
}f[1100];
bool cm(my a,my b)
{ return a.value<b.value||(a.value==b.value&&a.node<b.node);}
int q[1100],num;
void dfs(int x,ll now)
{
if(now==0)
{
cout<<num<<endl;
for(int i=1;i<=num;i++)
printf("%d ",q[i]);
exit (0);
}
if(x>n) return;
else
{
q[++num]=x;
dfs(x+1,now^a[x]);
num--;
dfs(x+1,now);
}
}
void init()
{
cin>>n;
for(int i=1;i<=n;i++)
a[i]=read(),f[i].value=a[i],f[i].node=i;
sort(f+1,f+1+n,cm);
for(int i=1;i<n;i++)
if(f[i].value==f[i+1].value)
{
cout<<'2'<<endl;
cout<<f[i].node<<' '<<f[i+1].node<<endl;
return;
}
for(int i=1;i<n;i++)
{
q[++num]=i;
dfs(i+1,a[i]);
num--;
}
}
int main()
{
freopen("asm_contribute.in","r",stdin);
freopen("asm_contribute.out","w",stdout);
init();
return 0;
}