把黑子与白子之间的距离当作每一堆石子的个数,那么只要第一次看一下异或后的值ans是否为0即可判断是否必败还是必胜了。
因为ans不等于0,那么先手走完一部后,后手面对的局面就是必败态了,后手移动以后,那一堆的石子增加了,那么先手只要使那一堆石子恢复成必败态即可。
ans等于0的情况也类似。
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n,m;
while(cin>>n>>m)
{
int a,b;
int ans=0;
for(int i=0;i<n;i++) {cin>>a>>b;ans^=(abs(a-b)-1);}
if(ans) cout<<"I WIN!"<<endl;
else cout<<"BAD LUCK!"<<endl;
}
return 0;
}