📚
AtCoder Beginner Contest 399 B
B問題としては少し難しく感じた。
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
var N int
fmt.Scan(&N)
reader := bufio.NewReaderSize(os.Stdin, 1<<20)
line, _ := reader.ReadString('\n')
line = strings.TrimSpace(line)
parts := strings.Split(line, " ")
ans := make([]int, N)
p := make([]int, N)
r := 1
for i := 0; i < N; i++ {
pi, _ := strconv.ParseInt(parts[i], 10, 64)
p[i] = int(pi)
}
for i := 0; i < N; i++ {
m := max(p)
if m == 0 {
break
}
a := 0
for j := 0; j < N; j++ {
if p[j] == m {
p[j] = 0
ans[j] = r
a++
}
}
r += a
}
for i := 0; i < N; i++ {
if i == N-1 {
fmt.Print(ans[i])
} else {
fmt.Print(ans[i], " ")
}
}
}
func max(nums []int) int {
max := nums[0]
for _, n := range nums {
if n > max {
max = n
}
}
return max
}
Discussion