Submission #102233

#TimeUsernameProblemLanguageResultExecution timeMemory
102233BenqCity (JOI17_city)C++14
100 / 100
532 ms53464 KiB
#pragma GCC optimize ("O3") #pragma GCC target ("sse4") #include <bits/stdc++.h> #include <ext/pb_ds/tree_policy.hpp> #include <ext/pb_ds/assoc_container.hpp> #include <ext/rope> using namespace std; using namespace __gnu_pbds; using namespace __gnu_cxx; typedef long long ll; typedef long double ld; typedef complex<ld> cd; typedef pair<int, int> pi; typedef pair<ll,ll> pl; typedef pair<ld,ld> pd; typedef vector<int> vi; typedef vector<ld> vd; typedef vector<ll> vl; typedef vector<pi> vpi; typedef vector<pl> vpl; typedef vector<cd> vcd; template <class T> using Tree = tree<T, null_type, less<T>, rb_tree_tag,tree_order_statistics_node_update>; #define FOR(i, a, b) for (int i = (a); i < (b); i++) #define F0R(i, a) for (int i = 0; i < (a); i++) #define FORd(i,a,b) for (int i = (b)-1; i >= (a); i--) #define F0Rd(i,a) for (int i = (a)-1; i >= 0; i--) #define trav(a, x) for (auto& a : x) #define mp make_pair #define pb push_back #define f first #define s second #define lb lower_bound #define ub upper_bound #define sz(x) (int)x.size() #define beg(x) x.begin() #define en(x) x.end() #define all(x) beg(x), en(x) #define resz resize const int MOD = 1000000007; // 998244353 const ll INF = 1e18; const int MX = 100001; const ld PI = 4*atan((ld)1); template<class T> void ckmin(T &a, T b) { a = min(a, b); } template<class T> void ckmax(T &a, T b) { a = max(a, b); } template<class A, class B> A operator+=(A& l, const B& r) { return l = l+r; } template<class A, class B> A operator-=(A& l, const B& r) { return l = l-r; } template<class A, class B> A operator*=(A& l, const B& r) { return l = l*r; } template<class A, class B> A operator/=(A& l, const B& r) { return l = l/r; } #include "Encoder.h" static vi adj[1<<18]; static vi lens; int dumb(int x) { return lb(all(lens),x)-lens.begin(); } int dfs(int x, int y, int st) { int ST = st+1; trav(i,adj[x]) if (i != y) ST = dfs(i,x,ST); int d = dumb(ST-st); Code(x,((ll)st<<8)+d); return st+lens[d]; } void Encode(int N, int A[], int B[]) { lens.pb(1); FOR(i,1,256) { int t = 1.05*lens.back(); if (t == lens.back()) t ++; lens.pb(t); } F0R(i,N-1) adj[A[i]].pb(B[i]), adj[B[i]].pb(A[i]); dfs(0,-1,0); }
#pragma GCC optimize ("O3") #pragma GCC target ("sse4") #include <bits/stdc++.h> #include <ext/pb_ds/tree_policy.hpp> #include <ext/pb_ds/assoc_container.hpp> #include <ext/rope> using namespace std; using namespace __gnu_pbds; using namespace __gnu_cxx; typedef long long ll; typedef long double ld; typedef complex<ld> cd; typedef pair<int, int> pi; typedef pair<ll,ll> pl; typedef pair<ld,ld> pd; typedef vector<int> vi; typedef vector<ld> vd; typedef vector<ll> vl; typedef vector<pi> vpi; typedef vector<pl> vpl; typedef vector<cd> vcd; template <class T> using Tree = tree<T, null_type, less<T>, rb_tree_tag,tree_order_statistics_node_update>; #define FOR(i, a, b) for (int i = (a); i < (b); i++) #define F0R(i, a) for (int i = 0; i < (a); i++) #define FORd(i,a,b) for (int i = (b)-1; i >= (a); i--) #define F0Rd(i,a) for (int i = (a)-1; i >= 0; i--) #define trav(a, x) for (auto& a : x) #define mp make_pair #define pb push_back #define f first #define s second #define lb lower_bound #define ub upper_bound #define sz(x) (int)x.size() #define beg(x) x.begin() #define en(x) x.end() #define all(x) beg(x), en(x) #define resz resize const int MOD = 1000000007; // 998244353 const ll INF = 1e18; const int MX = 100001; const ld PI = 4*atan((ld)1); template<class T> void ckmin(T &a, T b) { a = min(a, b); } template<class T> void ckmax(T &a, T b) { a = max(a, b); } template<class A, class B> A operator+=(A& l, const B& r) { return l = l+r; } template<class A, class B> A operator-=(A& l, const B& r) { return l = l-r; } template<class A, class B> A operator*=(A& l, const B& r) { return l = l*r; } template<class A, class B> A operator/=(A& l, const B& r) { return l = l/r; } #include "Device.h" static vi lens; void InitDevice() { lens.pb(1); FOR(i,1,256) { int t = 1.05*lens.back(); if (t == lens.back()) t ++; lens.pb(t); } } pi decode(ll x) { pi a = {x>>8,lens[x%(1<<8)]}; a.s += a.f; return a; } bool contain(pi a, pi b) { return a.f <= b.f && b.s <= a.s; } int Answer(long long S, long long T) { pi X = decode(S), Y = decode(T); if (contain(X,Y)) return 1; if (contain(Y,X)) return 0; return 2; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...