# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1009416 | siewjh | City (JOI17_city) | C++17 | 259 ms | 51644 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "Encoder.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
namespace{
const ll MAXN = 250005;
vector<int> adj[MAXN];
ll pwr[300], ind = -1;
}
void dfs(int x, int par){
ll st = ++ind;
for (int nn : adj[x]){
if (nn == par) continue;
dfs(nn, x);
}
ll sz = ind - st + 1;
int lg = lower_bound(pwr, pwr + 300, sz) - pwr;
ind += pwr[lg] - sz;
Code(x, st * 300 + lg);
}
void Encode(int N, int A[], int B[]){
pwr[0] = 1;
for (int i = 1; i < 300; i++) pwr[i] = ceil(pwr[i - 1] * 1.05);
for (int i = 0; i < N - 1; ++i) {
int a = A[i], b = B[i];
adj[a].push_back(b);
adj[b].push_back(a);
}
dfs(0, -1);
}
#include "Device.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
namespace{
ll pwr[300];
}
void InitDevice(){
pwr[0] = 1;
for (int i = 1; i < 300; i++) pwr[i] = ceil(pwr[i - 1] * 1.05);
}
int Answer(ll S, ll T){
ll sta = S / 300, ena = sta + pwr[S % 300] - 1, stb = T / 300, enb = stb + pwr[T % 300] - 1;
if (sta >= stb && ena <= enb) return 0;
else if (stb >= sta && enb <= ena) return 1;
return 2;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |