AtCoder ABC 127 C - Prison (Go)
irisruneです。水パフォですが久々にレートが伸びて嬉しい気分ですね。
最近のC問題にしてはかなりシンプルな問題だと思います。
package main import ( "bufio" "fmt" "os" "strconv" ) var sc *bufio.Scanner func nextInt() int { sc.Scan() i, e := strconv.Atoi(sc.Text()) if e != nil { panic(e) } return i } func maxInt(a, b int) int { if a > b { return a } return b } func minInt(a, b int) int { if a < b { return a } return b } func main() { sc = bufio.NewScanner(os.Stdin) sc.Split(bufio.ScanWords) n, m := nextInt(), nextInt() maxL, minR := 1, n for i := 0; i < m; i++ { l, r := nextInt(), nextInt() maxL, minR = maxInt(maxL, l), minInt(minR, r) } fmt.Println(maxInt(0, minR-maxL+1)) }
公式解説でいうところの考え方1の解き方です。単純にの最大値との最小値を求めてそこから答えを導き出すだけでした。
考え方2についても考察してみましたがコード自体は結局変わらなさそうです。
雑記
- ABC128は遅刻確定したのと2日連続参加の気力はなかったのとで未参加でした。