package main
import (
"fmt"
"math"
)
type point struct {
x int
y int
}
func main() {
var n, e int
fmt.Scan(&n, &e)
inputList := make(map[int]int, n)
for i := 0; i < n; i++ {
var x, offsetY int
fmt.Scan(&x, &offsetY)
inputList[x] = offsetY
}
prevX := 0
prevY := 0
area := 0
//不全全部点的Y数值
for x, offsetY := range inputList {
wight := x - prevX
height := int(math.Abs(float64(prevY)))
area += wight * height
prevX = x
prevY += offsetY
}
if prevX < e {
area += (e - prevX) * int(math.Abs(float64(prevY)))
}
fmt.Println(area)
}
总结:题目中纵坐标是偏移量,需要用上一个点的y加上当前的偏移量才是下一个点的y.