Submission #427340

#TimeUsernameProblemLanguageResultExecution timeMemory
427340jamezzzCity (JOI17_city)C++17
8 / 100
564 ms40940 KiB
#include "Encoder.h"
#include <bits/stdc++.h>
using namespace std;

#define sf scanf
#define pf printf
#define fi first
#define se second
#define pb emplace_back
#define sz(x) (int)x.size()
#define all(x) x.begin(),x.end()
typedef long long ll;
typedef pair<int,int> ii;
#define maxn 250005

ll pre[maxn],pst[maxn],cnt;
vector<int> AL[maxn];

void dfs(int u){
	pre[u]=cnt++;
	for(int v:AL[u]){
		if(pre[v]==-1)dfs(v);
	}
	pst[u]=cnt-1;
}

void Encode(int n,int a[],int b[]){
	memset(pre,-1,sizeof pre);
	for(int i=0;i<n-1;++i){
		AL[a[i]].pb(b[i]);
		AL[b[i]].pb(a[i]);
	}
	dfs(0);
	for(int i=0;i<n;++i){
		int dist=pst[i]-pre[i];
		Code(i,(pre[i]<<16)+dist);
	}
}
#include "Device.h"
#include <bits/stdc++.h>
using namespace std;

#define sf scanf
#define pf printf
#define fi first
#define se second
#define pb emplace_back
#define sz(x) (int)x.size()
#define all(x) x.begin(),x.end()
typedef long long ll;
typedef pair<int,int> ii;

int ones=(1<<16)-1;

void InitDevice(){
}

int Answer(ll S, ll T){
	ll distS=S&ones,distT=T&ones;
	S>>=16;T>>=16;
	ll pstS=S+distS,pstT=T+distT;
	if(T<=S&&S<=pstT)return 0;
	if(S<=T&&T<=pstS)return 1;
	return 2;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...