package main import ( . "fmt" . "os" bf "bufio" "sort" "math/rand" ) func min(a,b int) int { if ars[pp[j]] } } sort.Slice(pp, less) } const TWOOPT = 200 for j := 0; j < TWOOPT ; j++ { for i := range rand.Perm(q) { k := min(rand.Intn(800+1)+i+1,q-1) f,g := min(i,k), max(i,k) var t0,t1 int64 if f > 0 { t0 += parttime(ls,rs,p,f-1,f) t1 += parttime(ls,rs,p,f-1,g) } else { t0 += int64(rs[p[f]]-ls[p[f]]+1)*100 t1 += int64(rs[p[g]]-rs[p[g]]+1)*100 } if g+1 < len(p) { t0 += parttime(ls,rs,p,g,g+1) t1 += parttime(ls,rs,p,f,g+1) } if t0 >= t1 { for ; f0 { Fprint(wr, " ") } Fprint(wr, vp+1) } Fprintln(wr) }