IT民工
加油!
/*
第一步判断是不是先手必败
非先手必败的话必有解,则输出sg为0的点
*/

/*Accepted    2176    109MS    972K    687 B    G++    Yu*/
#include <stdio.h>
const int MAXM = 200200;
int a[MAXM];

int main()
{
    int ans;
    int m;
    while(scanf("%d", &m), m)
    {
        ans = 0;
        for(int i = 0; i < m; i ++)
        {
            scanf("%d", &a[i]);
            ans ^= a[i];
        }
        if(ans == 0)
        {
            puts("No");
            continue;
        }
        else
        {
            puts("Yes");
            for(int i = 0; i < m; i ++)
            {
                int ret = ans ^ a[i];
                if(ret < a[i])
                {
                    printf("%d %d\n", a[i], ret);
                }
            }
        }
    }
    return 0;
}
posted on 2012-10-22 16:43  找回失去的  阅读(222)  评论(0编辑  收藏  举报