Submission #218085

#TimeUsernameProblemLanguageResultExecution timeMemory
218085patrikpavic2City (JOI17_city)C++17
8 / 100
245 ms49648 KiB
#include "Encoder.h" #include <vector> #include <cstdio> #define PB push_back #define X first #define Y second using namespace std; typedef long long ll; const int N = 3e5 + 500; vector < int > v[N]; ll tko[N]; void dfs(int x, int lst,int dulj){ int lg = 1, cnt = 0; for(;(1 << lg) < (int)v[x].size() - (x != lst);lg++); for(int y : v[x]){ if(y == lst) continue; tko[y] = tko[x] + (1LL << dulj) * (cnt++); dfs(y, x, dulj + lg); } //printf("x = %d tko = %lld dulj = %d\n", x, tko[x] + (1 << dulj), dulj); Code(x, tko[x] + (1LL << dulj)); } void Encode(int n, int u1[], int u2[]){ for(int i = 0;i + 1 < n;i++) v[u1[i]].PB(u2[i]), v[u2[i]].PB(u1[i]); dfs(0, 0, 0); }
#include "Device.h" #include <cstdio> typedef long long ll; void InitDevice(){ return; } bool dijete(ll A, ll B){ int dulj_A = 0, dulj_B = 0; for(;(1LL << dulj_A) <= A;dulj_A++); for(;(1LL << dulj_B) <= B;dulj_B++); if(dulj_A > dulj_B) return 0; //printf("dulj_A = %d dulj_B = %d\n", dulj_A, dulj_B); //printf("Je li B %lld dijete od A %lld\n", B, A); for(int i = 0;i + 1 < dulj_A;i++){ if((A & (1 << i)) != (B & (1 << i))) return 0; } //printf("DA\n"); return 1; } int Answer(ll A, ll B) { if(dijete(B, A)) return 0; if(dijete(A, B)) return 1; return 2; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...