Часто застрял исключающее ИЛИ 80 пельменей

Я аутист

Огромная извечная проблема кода постоянная. , ,

# include <. бит / STDC ++ H> 
#define будет долго долго 
#define щий беззнаковым целочисленное значение с 
помощью патезраса; 
сопзЬ Int N = 500000, M = N * 33 + 5; 

встроенный интерфейс для чтения () { 
	щ х = 0; символ ч = GetChar (); 
	для (;! isdigit (ч); ч = GetChar ()); 
	для (; isdigit (СН); ч = GetChar ()) х = х * 10 + СН-'0' ; 
	вернуться х; 
} 

Щ п, к, L, R, середина, Num = 1, с [67], А; 
щ ч [М] [2], сумма [М], ANS, а [N + 5]; 
LL TOT, тт; 

встроенные модули недействительными (щ х) { 
	щ Теперь = 1, и; 
	сумма [1] ++; 
	для (INT I = 31; я> = 0, а теперь = CH [теперь] [и], сумма [теперь] ++ я -) { 
		и = (х & с [I])> 0; 
		если ч [теперь] [и] = ++ Num (CH [теперь] [и]!); 
	} 
} 

/ * 
   Х ^ а [я]> = средний 
* /

проверка встроенный BOOL () { 
	Теперь LL = 0; 
	для (Ui = 0, р, и; г <= п; я ++) { 
		р = 1; 
		для (Int J = 31; р && J> = 0; J -) { 
			у = (а [г] & с [J])> 0; 
		    если (середина и с [J]) р = ч [р] [и ^ 1]; 
		    то теперь + = сумма [ч [р] [и ^ 1]], р = ч [р] [и]; 
		} 
		Теперь + = сумма [р]; 
		если (теперь> = к * 2) возвращение 1; 
	} 
	Возвращает 0; 
} 

/ * 
    А ^ Теперь> = ANS 
* / 

недействительным Get (интермедиат р, Int л, щ теперь щ ALR) { 
	если ((А ^ сейчас) <ALR) возвращение; 
	если (л <0) {тт + = сумма [р], TOT + = сумма [р] * (LL) (А ^ сейчас); возвращение;} 
	
	AlR + = C [L] & анс; 
	если (ч [р] [0]) Получить (ч [р] [0], л-1, в настоящее время, ALR); 
	если (ч [р] [1]) Получить (ч [р] [1], L-1, теперь + с [л], ALR); 
} 

Инлайн недействительным решения () { 
	L = 0, R = (1 << 32ll) -1;
	в то время как (L <= R) { 
		середина = L + (LL) R >> 1; 
		если (проверка ()) ANS = середина L = середина + 1; 
		то R = середина-1; 
	} 
	
	Для (INT I = 0; г <= п; я ++) А = а [I], Get (1,31,0,0); 
} 

INT основных () { 
// freopen ( "data.in", "г", STDIN); 
// freopen ( "data.out", "ш", стандартный вывод); 
	
// соиЬ << часы () << епсИ; 
	
	с [0] = 1; для (INT = 1; г <= 31; я ++) C [I] = с [I-1] + с [I-1]; 

	п = следующим образом (), к = чтения (), модули (0); 
	для (INT = 1; г <= п; я ++) а [I] = а [I-1] ^ следующим образом (), модули (а [I]); 
	
	решения (), TOT >> = 1, тт >> = 1; 
// соиЬ << анс << епсИ; 
	Е ( "% LLD \ п", TOT-ANS * (LL) (тт-к)); 
	
// соиЬ << часы () << епсИ; 
	возвращать 0; 
}

  

рекомендация

отwww.cnblogs.com/JYYHH/p/11085357.html