結果
問題 |
No.5010 Better Mo's Algorithm is Needed!! (Unweighted)
|
ユーザー |
![]() |
提出日時 | 2025-01-28 05:05:01 |
言語 | Go (1.23.4) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,322 bytes |
コンパイル時間 | 12,604 ms |
コンパイル使用メモリ | 244,836 KB |
実行使用メモリ | 23,552 KB |
スコア | 178,800,422 |
最終ジャッジ日時 | 2025-01-28 05:15:49 |
合計ジャッジ時間 | 570,527 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 81 TLE * 39 |
ソースコード
package main import ( . "fmt" . "os" bf "bufio" "sort" ) func min(a,b int) int { if a<b { return a } return b } func max(a,b int) int { return a+b-min(a,b) } func abs(a int64) int64 { if a < 0 { return -a } return a } func parttime(ls,rs,p []int, i,j int) (t int64) { pi := p[i] a, b := ls[pi], rs[pi] pj := p[j] c, d := ls[pj], rs[pj] x,y:=min(a,c),max(a,c) u,v:=min(b,d),max(b,d) t += int64(y-x)*100 t += int64(v-u)*100 return } func main() { rd:=bf.NewReader(Stdin) wr:=bf.NewWriter(Stdout) defer wr.Flush() var n,q,wt,st int Fscan(rd,&n,&q,&wt,&st) ws := make([]int, n) ls := make([]int, q) rs := make([]int, q) p := make([]int, q) for i := range ws { Fscan(rd,&ws[i]) } for i := range ls { Fscan(rd,&ls[i],&rs[i]) p[i] = i } sort.Slice(p, func(i, j int) bool { return ls[p[i]] < ls[p[j]] }) const SZ=448 for k:=0;k<n; k+=SZ { ss:=0 for _,i:=range p[k:] { if ls[i]<k+SZ { ss++ } else { break } } pp := p[k:min(q,k+ss)] var less func(i,j int) bool if k%2==0 { less = func(i,j int) bool { return rs[pp[i]]<rs[pp[j]] } } else { less = func(i,j int) bool { return rs[pp[i]]>rs[pp[j]] } } sort.Slice(pp, less) } for i, vp := range p { if i>0 { Fprint(wr, " ") } Fprint(wr, vp+1) } Fprintln(wr) }