Sponsors

Codeforces Round #429 (Div. 1), problem: (E) In a Trap Solution In Java

import java.io.*;
import java.util.*;

public class E {

int[] a;

static final int LOG = 8;
static final int BLOCK = 1 << LOG;
static final int LOW_MASK = BLOCK – 1;

int[] head;
int[] next;
int[] to;

int[] par;
int[] depth;

void dfs(int v, int p) {
par[v] = p;
for (int e = head[v]; e >= 0; e = next[e]) {
int u = to[e];
if (u == p) {
continue;
}
depth[u] = depth[v] + 1;
dfs(u, v);
}
}

int[][] go = new int[2][BLOCK * LOG + 1];
int triePtr = 0;

int newNode() {
go[0][triePtr] = go[1][triePtr] = -1;
return triePtr++;
}

void submit() {
int n = nextInt();
int q = nextInt();

a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = nextInt();
}

head = new int[n];
next = new int[2 * n – 2];
to = new int[2 * n – 2];
Arrays.fill(head, -1);

for (int i = 0; i < n – 1; i++) {
int v = nextInt() – 1;
int u = nextInt() – 1;

to[2 * i] = u;
next[2 * i] = head[v];
head[v] = 2 * i;

to[2 * i + 1] = v;
next[2 * i + 1] = head[u];
head[u] = 2 * i + 1;
}

par = new int[n];
depth = new int[n];
dfs(0, -1);

int[] parBlock = new int[n];

int[][] prec = new int[n][];

for (int i = 0; i < n; i++) {
if (depth[i] < BLOCK) {
continue;
}
int[] bestLow = new int[BLOCK];
Arrays.fill(bestLow, -1);

int v = i;
for (int j = 0; j < BLOCK; j++) {
int now = a[v] ^ j;
int low = now & LOW_MASK;
int high = now >> LOG;
bestLow[high] = Math.max(bestLow[high], low);
v = par[v];
}

parBlock[i] = v;

triePtr = 0;
int root = newNode();

for (int j = 0; j < BLOCK; j++) {
if (bestLow[j] == -1) {
continue;
}

v = root;

for (int k = LOG – 1; k >= 0; k–) {
int bit = getBit(j, k);
if (go[bit][v] == -1) {
go[bit][v] = newNode();
}
v = go[bit][v];
}
}

prec[i] = new int[BLOCK];

for (int j = 0; j < BLOCK; j++) {
v = root;

int highPicked = 0;

for (int k = LOG – 1; k >= 0; k–) {
int bit = getBit(j, k);
if (go[bit ^ 1][v] != -1) {
highPicked |= (bit ^ 1) << k;
v = go[bit ^ 1][v];
} else {
highPicked |= bit << k;
v = go[bit][v];
}
}

prec[i][j] = ((highPicked ^ j) << LOG) | bestLow[highPicked];
}

}

while (q– > 0) {
int top = nextInt() – 1;
int btm = nextInt() – 1;

int ret = 0;
int i = 0;
for (;; i++) {
if (depth[btm] – BLOCK >= depth[top]) {
ret = Math.max(ret, prec[btm][i]);
btm = parBlock[btm];
} else {
break;
}
}

i <<= LOG;
while (btm != -1 && depth[btm] >= depth[top]) {
ret = Math.max(ret, a[btm] ^ i);
btm = par[btm];
i++;
}

out.println(ret);
}
}

int getBit(int mask, int i) {
return (mask >> i) & 1;
}

void preCalc() {

}

void stress() {

}

void test() {

}

E() throws IOException {
br = new BufferedReader(new InputStreamReader(System.in));
out = new PrintWriter(System.out);
preCalc();
submit();
// stress();
// test();
out.close();
}

static final Random rng = new Random();

static int rand(int l, int r) {
return l + rng.nextInt(r – l + 1);
}

public static void main(String[] args) throws IOException {
new E();
}

BufferedReader br;
PrintWriter out;
StringTokenizer st;

String nextToken() {
while (st == null || !st.hasMoreTokens()) {
try {
st = new StringTokenizer(br.readLine());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return st.nextToken();
}

String nextString() {
try {
return br.readLine();
} catch (IOException e) {
throw new RuntimeException(e);
}
}

int nextInt() {
return Integer.parseInt(nextToken());
}

long nextLong() {
return Long.parseLong(nextToken());
}

double nextDouble() {
return Double.parseDouble(nextToken());
}
}

Star Wars Puppetronics Line...

Star Wars Puppetronics Line: Bring Yoda and Chewbacca to...

‘Something Money Can’t Fix’:...

Health Concerns Mount Over Donald Trump’s Swollen Hands and...

Ted Turner, pioneer of...

Ted Turner, Visionary CNN Founder and Media Pioneer, Dies...

Astronomers Explore the Surface...

Astronomers Explore the Surface Composition of a Nearby Super-EarthIn...

Trump Tries to Downplay...

Trump Minimizes Economic Concerns Amid Escalating Iran Tensions During a...

Value 360 Communications IPO...

Value 360 Communications IPO Opens Today: Key Details, Price...

Star Wars Puppetronics Line Lets You Create Your Own Adventures With Yoda, Chewbacca, and More

Star Wars Puppetronics Line: Bring Yoda and Chewbacca to LifeThe Star Wars universe is expanding beyond the silver screen and into our living rooms...

‘Something Money Can’t Fix’: Trump’s Swollen, Discolored Hands Raises Health Concerns Days After Video Shows Him Slumping and Struggling to Walk

Health Concerns Mount Over Donald Trump’s Swollen Hands and Mobility Struggles In recent days, public attention has shifted sharply toward the physical well-being of former...

Ted Turner, pioneer of 24-hour television news and founder of CNN, dies at 87

Ted Turner, Visionary CNN Founder and Media Pioneer, Dies at 87 The world of media and global communications is mourning the loss of a true...

Astronomers Explore the Surface Composition of a Nearby Super-Earth – Center for Astrophysics | Harvard & Smithsonian

Astronomers Explore the Surface Composition of a Nearby Super-EarthIn a groundbreaking achievement for modern astronomy, researchers using the James Webb Space Telescope (JWST) have...

Trump Tries to Downplay Economic Effects of the Iran War (New York Times)

Trump Minimizes Economic Concerns Amid Escalating Iran Tensions During a high-profile event at the White House designated for Small Business Week, President Donald Trump addressed...

Value 360 Communications IPO opens today. Check GMP, subscription and other details

Value 360 Communications IPO Opens Today: Key Details, Price Band, and Subscription Info Value 360 Communications, a prominent name in the Indian strategic communications and...

Mob of teens storms Times Square Scientology church amid viral ‘speed running’ trend

The Rise of Scientology Speed Running in NYC The bustling streets of Times Square recently witnessed a scene that looked more like a social media...

MPS Entertainment is live!

MPS Entertainment is Now Live: A New Era of Digital Content Begins In an era where digital content reigns supreme, a new player has officially...

Why the Totally Normal Zoe Hines WWE Signing Is Pure Meritocracy

WWE's Latest Acquisition: Why the Zoe Hines Signing Represents True Meritocracy The professional wrestling landscape is constantly shifting, with new talent arriving to challenge the...