Submission #53840

#TimeUsernameProblemLanguageResultExecution timeMemory
53840grumpy_gordonCity (JOI17_city)C++17
100 / 100
531 ms64544 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#include "Encoder.h"
const int maxn = 5e5 + 10;
const double w = 1.05;

vector<int> e[maxn];

int t;

void dfs(int v, int par){
    int tin = t++;
    for (int i : e[v])
    if (i != par)
        dfs(i, v);
    int val = 0;
    double kek = 1;
    while ((int)kek < t - tin)
        val++, kek *= w;
    t = tin + (int)kek;
    Code(v, val * (ll)maxn + tin);
}

void Encode(int N, int A[], int B[])
{
    int n = N;
    for (int i = 0; i < n - 1; i++){
        int v = A[i], u = B[i];
        e[v].push_back(u);
        e[u].push_back(v);
    }
    dfs(0, -1);
}
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#include "Encoder.h"
const int maxn = 5e5 + 10;
const double w = 1.05;

double mas[2000];

void InitDevice(){
	mas[0] = 1;
    for (int i = 1; i < 2000; i++)
		mas[i] = mas[i - 1] * w;
}

int Answer(long long S, long long T)
{
    int a = S / maxn, b = S % maxn, c = T / maxn, d = T % maxn;
    
    a = b + (int)mas[a] - 1;
    c = d + (int)mas[c] - 1;
    if (a >= c && b <= d)
        return 1;
    if (a <= c && b >= d)
        return 0;
    return 2;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...