🔖
AtCoder Beginner Contest 390
とりあえずC問題まで。
A問題
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
reader := bufio.NewReaderSize(os.Stdin, 1<<20)
line, _ := reader.ReadString('\n')
line = strings.TrimSpace(line)
if line == "1 2 3 5 4" || line == "1 2 4 3 5" || line == "1 3 2 4 5" || line == "2 1 3 4 5" {
fmt.Println("Yes")
} else {
fmt.Println("No")
}
}
B問題
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
var a int
fmt.Scan(&a)
reader := bufio.NewReaderSize(os.Stdin, 1<<20)
line, _ := reader.ReadString('\n')
line = strings.TrimSpace(line)
parts := strings.Split(line, " ")
for i := 1; i < a-1; i++ {
g0, _ := strconv.Atoi(parts[i-1])
geo, _ := strconv.Atoi(parts[i])
geo2, _ := strconv.Atoi(parts[i+1])
if geo*geo != g0*geo2 {
fmt.Println("No")
return
}
}
fmt.Println("Yes")
}
C問題
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
var h, w int
fmt.Scan(&h, &w)
var cells [][]rune
minX := 1000
minY := 1000
maxX := -1
maxY := -1
reader := bufio.NewReaderSize(os.Stdin, 1<<20)
for i := 0; i < h; i++ {
line, _ := reader.ReadString('\n')
line = strings.TrimSpace(line)
cell := []rune(line)
cells = append(cells, cell)
for j := 0; j < w; j++ {
if cell[j] == '#' {
minX = min(minX, j)
minY = min(minY, i)
maxX = max(maxX, j)
maxY = max(maxY, i)
}
}
}
for i := minY; i <= maxY; i++ {
for j := minX; j <= maxX; j++ {
if cells[i][j] == '.' {
fmt.Println("No")
return
}
}
}
fmt.Println("Yes")
}
func max(a, b int) int {
if a > b {
return a
}
return b
}
func min(a, b int) int {
if a > b {
return b
}
return a
}
reader := bufio.NewReaderSize(os.Stdin, 1<<20)をループ内で呼び出すと実行時エラーになることを学んだ。
まあそうなるよね。
Discussion