# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
363672 | denkendoemeer | City (JOI17_city) | C++14 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "Encoder.h"
#include<bits/stdc++.h>
using namespace std;
vector<int>g[250005],r;
int in[250005],t[250005],u;
void dfs(int nod,int ta)
{
in[nod]=u++;
for(auto it:g[nod]){
if (it!=ta)
dfs(it,nod);
}
if (in[nod]==u-1)
return ;
int &ans=t[nod];
while(in[nod]+r[ans]<u-1)
ans++;
u=in[nod]+r[ans]+1;
}
void Encode(int n,int a[],int b[])
{
double d=1.050045;
r.push_back(0);
int i;
for(i=1;i<256;i++){
int aux=d*r.back();
if (r.back()==aux)
++aux;
r.push_back(aux);
}
for(i=0;i<n-1;i++){
g[a[i]].push_back(b[i]);
g[b[i]].push_back(a[i]);
}
dfs(0,-1);
for(i=0;i<n;i++)
Code(i,in[i]+(t[i]<<20));
}
#include "Device.h"
#include<bits/stdc++.h>
#define ll long long
using namespace std;
vector<int>aux;
void init()
{
double d=1.050045;
aux.push_back(0);
int i;
for(i=1;i<256;i++){
int nr=aux.back()*d;
if (aux.back()==nr)
++nr;
aux.push_back(nr);
}
}
int Answer(ll s,ll t)
{
int aux1,aux2,aux3,aux4;
aux1=s&((1<<20)-1);
aux2=t&((1<<20)-1);
aux3=aux1+aux[s>>20];
aux4=aux2+aux[t>>20];
if (aux2<=aux1 && aux3<=aux4)
return 0;
if (aux1<=aux2 && aux4<=aux3)
return 1;
return 2;
}