Submission #60989

# Submission time Handle Problem Language Result Execution time Memory
60989 2018-07-25T05:21:02 Z 윤교준(#1762) City (JOI17_city) C++11
0 / 100
167 ms 19632 KB
#include "Encoder.h"
#include <bits/stdc++.h>
#define pb push_back
#define eb emplace_back
#define allv(V) ((V).begin()),((V).end())
#define sorv(V) sort(allv(V))
#define univ(V) (V).erase(unique(allv(V)),(V).end())
#define revv(V) reverse(allv(V))
#define sz(V) ((int)(V).size())
#define upmin(a,b) (a)=min((a),(b))
#define upmax(a,b) (a)=max((a),(b))
#define rb(x) ((x)&(-(x)))
#define INF (0x3f3f3f3f)
#define INFLL (0x3f3f3f3f3f3f3f3fll)
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
static void fg(vector<int> G[], int a, int b) { G[a].eb(b); G[b].eb(a); }

static const int MAXN = 250005;

static vector<int> G[MAXN];

static int O[MAXN], C[MAXN];
static int A[MAXN], B[MAXN];

static int N;

static void dfs(int i, int &c) {
	c++; O[i] = c; C[i] = 1;
	for(int v : G[i]) if(!O[v]) {
		dfs(v, c);
		C[i] += C[v];
	}
	for(int k = 1;; k <<= 1) if(C[i] <= k) {
		C[i] = k;
		break;
	}
}

void Encode(int N, int A[], int B[]) {
	::N = N;
	for(int i = 0; i < N-1; i++) {
		::A[i] = A[i];
		::B[i] = B[i];
		fg(G, A[i], B[i]);
	}

	{ int t = 0; dfs(0, t); }

	for(int i = 0; i < N; i++) {
		ll key = O[i]-1;
		key <<= 5;

		for(int k = 0; k < 32; k++)
			if(C[i] == (1<<k))
				key |= k;

		Code(i, key);
	}
}
#include "Device.h"
#include <bits/stdc++.h>
#define pb push_back
#define eb emplace_back
#define allv(V) ((V).begin()),((V).end())
#define sorv(V) sort(allv(V))
#define univ(V) (V).erase(unique(allv(V)),(V).end())
#define revv(V) reverse(allv(V))
#define sz(V) ((int)(V).size())
#define upmin(a,b) (a)=min((a),(b))
#define upmax(a,b) (a)=max((a),(b))
#define rb(x) ((x)&(-(x)))
#define INF (0x3f3f3f3f)
#define INFLL (0x3f3f3f3f3f3f3f3fll)
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;

void InitDevice() {
}

int Answer(long long S, long long T) {
	int si = (S>>5), sc = S&((1<<5)-1);
	int ti = (T>>5), tc = T&((1<<5)-1);
	sc = 1<<sc; tc = 1<<tc;

	if(ti < si && si < ti+tc) return 0;
	if(si < ti && ti < si+sc) return 1;
	return 2;
}
# Verdict Execution time Memory Grader output
1 Incorrect 9 ms 12288 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 167 ms 19632 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -