Submission #1066121

#TimeUsernameProblemLanguageResultExecution timeMemory
1066121UnforgettableplCity (JOI17_city)C++17
30 / 100
328 ms47068 KiB
#include "Encoder.h" #include <bits/stdc++.h> using namespace std; const int MaxN = 250000; namespace { long long combiner(long long l,long long r) { return ((r+1ll)*(r))/2ll + l; } } void Encode(int N, int A[], int B[]){ vector<vector<int>> adj(N); for(int i=0;i<N-1;i++) { adj[A[i]].emplace_back(B[i]); adj[B[i]].emplace_back(A[i]); } int tim = -1; vector<int> starts(N); vector<int> ends(N); function<void(int,int)> dfs = [&](int x,int p) { int start =++tim; for(int&i:adj[x])if(i!=p) { dfs(i,x); } Code(x,combiner(start,tim)); }; dfs(0,-1); }
#include "Device.h" #include <bits/stdc++.h> using namespace std; const int MaxN = 250000; namespace { vector<long long> ranges; void init_ranges() { for(long long r=0;r<MaxN;r++) { ranges.emplace_back(((r+1ll)*r)/2ll); } } pair<int,int> decombiner(long long x){ auto iter = upper_bound(ranges.begin(),ranges.end(),x);iter--; x-=*iter; return {x,iter-ranges.begin()}; } } void InitDevice(){ init_ranges(); } int Answer(long long S, long long T){ auto [l1,r1] = decombiner(S); auto [l2,r2] = decombiner(T); if(l1<=l2 and r2<=r1)return 1; if(l2<=l1 and r1<=r2)return 0; return 2; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...