AGC041A - Table Tennis Training
Il a éclaté en 28 minutes et demie WA5. J'ai pensé que c'était facile et l'ai soumis, mais ce n'était pas facile.
La première des réponses suivantes est la réponse
N, A, B = map(int, input().split())
t = float('inf')
if abs(A - B) % 2 == 0:
t = min(abs(A - B) // 2, t)
t = min(B - 1, t)
t = min(N - A, t)
t = min((A - 1 + 1) + (B - A - 1) // 2, t)
t = min((N - B + 1) + (N - (A + (N - B + 1))) // 2, t)
print(t)
PS: Si vous y repensez, vous n'avez pas besoin de 2 et de 3, et si c'est pair, vous n'avez pas à penser au motif qui va jusqu'au bord.
N, A, B = map(int, input().split())
if (B - A) % 2 == 0:
print((B - A) // 2)
else:
print(min(A, N - B + 1) + (B - A - 1) // 2)
Percer en 113 minutes. WA5. Mangez TLE avec Python, mangez TLE avec PyPy, mangez TLE même s'il est réécrit avec Go, effacez une copie inutile de slice, AC, un seul cas de test lourd Il est entré et a été foiré.
Cependant, la danse du délice s'est réincarnée de l'état de larmes qui semblait être classé plein bocco dans les années 1900 jusqu'aux splendides 900.
Puisque M est le nombre maximum de votes qui peuvent recevoir un problème, si le score actuel + M est égal ou supérieur au score Pth, il s'agit essentiellement d'un candidat. Cependant, s'il y avait trop de votes, je devais voter pour le score Pth, ce qui était très difficile. Pour être honnête, je l'ai écrit correctement, mais je l'ai souvent parcouru. À proprement parler, il semble y avoir un trou quelque part ...
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
)
func min(x, y int) int {
if x < y {
return x
}
return y
}
func main() {
N := readInt()
M := readInt()
V := readInt()
P := readInt()
A := make([]int, N)
for i := 0; i < N; i++ {
A[i] = readInt()
}
sort.Sort(sort.Reverse(sort.IntSlice(A)))
p := A[P-1]
V -= P - 1
b := A[P-1:]
for {
mv := M * V
for i := 0; i < len(b); i++ {
t := min(p-b[i], M)
mv -= t
}
if mv > 0 {
p += (mv + len(b) - 1) / len(b)
} else {
break
}
}
result := 0
for i := 0; i < N; i++ {
if A[i]+M >= p {
result++
}
}
fmt.Println(result)
}
const (
ioBufferSize = 1 * 1024 * 1024 // 1 MB
)
var stdinScanner = func() *bufio.Scanner {
result := bufio.NewScanner(os.Stdin)
result.Buffer(make([]byte, ioBufferSize), ioBufferSize)
result.Split(bufio.ScanWords)
return result
}()
func readString() string {
stdinScanner.Scan()
return stdinScanner.Text()
}
func readInt() int {
result, err := strconv.Atoi(readString())
if err != nil {
panic(err)
}
return result
}
Recommended Posts