キリを逃げるために線形試みが続いマナ・降順に応じてすべての要素は、挿入されました。
#include <cstdioを> する#include <アルゴリズム> の#define N 2000 の#define M 62 の#defineは長い長いっ の#define setIO(S)freopenは(S ".IN"、 "R"、STDIN) 名前空間stdを使用。 int型のn; LLのD [N]。 構造体のノード { LLヴァル、マジック; ノード(LLヴァル= 0、0 =マジックLL):ヴァル(val)で、魔法(マジック){} } E [N]。 ブールCMP(ノード、ノードB) { 戻りa.magic> b.magic。 } int型のmain() { LL再= 0。 int型I、J。 // setIO( "入力"); scanf関数( "%のD"、&N); ([I] .magic "%のLLDの%のLLD"、&E [I] .val、&E)のscanf(I ++; iが<= N I = 1)のために、 ソート(E + 1、E + 1 + N、CMP)。 (I = 1; iが<= N。 LL、X = E [I] .val、Y = E [I] .magic。 - (J; J> = 0 J = M)のための { IF(X&(1LL << J)) { IF(D [j])、X ^ = D [J]。 他 { D [j] = xと; + = Y再。 ブレーク; } } } } のprintf( "%LLDする\ n"、RE)。 0を返します。 }