結果
問題 | No.5010 Better Mo's Algorithm is Needed!! (Unweighted) |
ユーザー |
![]() |
提出日時 | 2022-12-17 13:08:46 |
言語 | cLay (20241019-1) |
結果 |
AC
|
実行時間 | 4,911 ms / 5,000 ms |
コード長 | 784 bytes |
コンパイル時間 | 3,799 ms |
実行使用メモリ | 18,412 KB |
スコア | 18,689,768,975 |
最終ジャッジ日時 | 2022-12-17 13:19:29 |
合計ジャッジ時間 | 639,830 ms |
ジャッジサーバーID (参考情報) |
judge16 / judge10 |
純コード判定しない問題か言語 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 120 |
ソースコード
ull xs[2d5]; ll ys[2d5]; ll ls[2d5],rs[2d5]; ll d(ll i,ll j){ return abs(ls[ys[j]]-ls[ys[i]])+abs(rs[ys[j]]-rs[ys[i]]); } void opt1(ll b){ rep(i,2d5-1-b){ if(d(i,i+1)+d(i+b,i+b+1)>d(i,i+b)+d(i+1,i+b+1)){ reverse(ys+(i+1),ys+(i+1+b)); } } } { Timer timer; timer.set(); ll@n,@q,@wt,@st,@w[n]; rep(i,q){ ll@--l,@--r; ls[i]=l; rs[i]=r; ull x=0; rep(32){ x<<=2; if(r<1d5){ x|=0; (l,r)=(l,r); }else if(l>=1d5){ x|=3; (l,r)=(l-1d5,r-1d5); }else if(l+r<2d5){ x|=1; (l,r)=(r-1d5,1d5-1-l); }else{ x|=2; (l,r)=(2d5-1-r,l); } l*=2; r*=2; } xs[i]=x; ys[i]=i; } sortA(q,xs,ys); rrep(i,4096){ long k=i%256+2; opt1(k); if(timer.get()>=4.9){ break; } } rep(i,q){ ys[i]+=1; } wt(ys(q)); }