Submission #1142768

#TimeUsernameProblemLanguageResultExecution timeMemory
1142768CDuongCity (JOI17_city)C++20
22 / 100
270 ms22716 KiB
#include "Encoder.h"
#include <bits/stdc++.h>
#define taskname ""
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define i64 long long
#define isz(x) (int)x.size()
using namespace std;

void Encode(int N, int A[], int B[]) {
	vector<vector<int>> g(N);
	for (int i = 0; i < N - 1; ++i) {
		int u = A[i], v = B[i];
		g[u].emplace_back(v);
		g[v].emplace_back(u);
	}
	int tdfs = 0;
	vector<i64> tin(N), tout(N);
	auto dfs = [&](auto self, int u, int p) -> void {
		tin[u] = tdfs++;
		for (auto v : g[u]) if (v != p) {
			self(self, v, u);
		}
		tout[u] = tdfs;
	};
	dfs(dfs, 0, -1);
	for (int i = 0; i < N; ++i) Code(i, tin[i] << 18 | tout[i]);
}
#include "Device.h"
#include <bits/stdc++.h>
#define taskname ""
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define i64 long long
#define isz(x) (int)x.size()
using namespace std;

void InitDevice() {
}

const int lim = (1 << 18) - 1;

int Answer(i64 S, i64 T) {
	int Sl = S >> 18, Sr = S & lim;
	int Tl = T >> 18, Tr = T & lim;
	if (Tl <= Sl and Sr <= Tr) return 0;
	if (Sl <= Tl and Tr <= Sr) return 1;
	return 2;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...