Cod sursa(job #2024639)

Utilizator Vlad3108Tir Vlad Ioan Vlad3108 Data 20 septembrie 2017 22:37:59
Problema Nunta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>
using namespace std;
int ct=0;
const int maxn = 1e5 + 50;

int n , x;
vector < int > rx;

bool Solve(){
    ++ct;
	random_shuffle( rx.begin() , rx.end() );
	int w = 0;
	for(int i = 0 ; i < n - 1 ; ++ i) w ^= rx[i];
	int an = x ^ w;
	for(int i = 0 ; i < n - 1 ; ++ i)
		if( an == rx[i] )
			return false;
	if( an > 1e6 ) return false;
	return true;
}

int main( int argc , char * argv[] ){
	//freopen( "Sample" , "r" , stdin );
	srand( time( NULL ) );
	for(int i = 0 ; i <= 500000 ; ++ i) rx.emplace_back( i );
	cin >> n >> x;
	if( n == 2 && x == 0 ){
		puts( "NO" );
		return 0;
	}
	printf( "YES\n" );
	if( n == 1 ) printf( "%d\n" , x );
	else{
		Solve();
		int w = x;
	    for(int i = 0 ; i < n - 1 ; ++ i) printf( "%d " , rx[i] ) , w ^= rx[i];
		printf( "%d\n" , w );
	}
	return 0;
}