您的位置:首页 > 其它

高僧斗法 蓝桥杯

2017-03-02 19:28 197 查看
博弈题,nim博弈

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <set>
#define MAX 250

using namespace std;

int main()
{
char s;
int a[1004];

int len=0;
while(1)
{
scanf("%d%c",&a[len++],&s);
if(s=='\n')break;
}
if(len%2)a[len]=a[len-1]+1,len++;
sort(a,a+len);
int ans=0;
for(int i=0;i<len;i+=2)
{
ans^=(a[i+1]-a[i]-1);
}

if(ans!=0)
{
for(int i=1;i<len;i++)
{
int k;
k=ans^(a[i]-a[i-1]-1);
if(k<(a[i]-a[i-1]-1))
{
printf("%d %d\n",a[i-1],a[i]-k-1);
break;
}
if(a[i+1]>a[i-1]+k+1)
{
printf("%d %d\n",a[i],a[i-1]+k+1);
break;
}
}
}
else printf("-1\n");

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: