結果
| 問題 | No.2183 LCA on Rational Tree |
| ユーザー |
👑 tails
|
| 提出日時 | 2023-01-17 19:46:26 |
| 言語 | cLay (20241019-1 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 46 ms / 2,000 ms |
| コード長 | 662 bytes |
| 記録 | |
| コンパイル時間 | 9,996 ms |
| コンパイル使用メモリ | 240,980 KB |
| 実行使用メモリ | 8,704 KB |
| 最終ジャッジ日時 | 2025-01-02 21:44:54 |
| 合計ジャッジ時間 | 9,677 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 6 |
ソースコード
struct S{
ll p,q,l,fn,f[32],gn,g[32];
S(){
rd(p,q);
fn=Factor(q-=p,f);
gn=0;
l=0;
}
void step(){
p+=l;
rep[g](x,gn){
while(p%x==0&&q%x==0){
p/=x;
q/=x;
}
}
l=1<<30;
gn=0;
ll n=0;
rep[f](x,fn){
if(q%x==0){
f[n++]=x;
ll r=x-p%x;
if(l>r){
l=r;
gn=0;
}
if(l==r){
g[gn++]=x;
}
}
}
fn=n;
}
};
bool h(S&u,S&v){
if(u.p<=v.p<u.p+u.l){
wt(v.p,v.p+v.q);
return true;
}
return false;
}
{
ll@q;
rep(q){
S u,v;
while(1){
ll d=v.q-u.q;
if(d==0){
if(h(u,v)||h(v,u)){
break;
}
}
if(d<=0){
u.step();
}
if(d>=0){
v.step();
}
}
}
}
tails