92 lines
1.8 KiB
Go
92 lines
1.8 KiB
Go
|
|
package main
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"bufio"
|
|||
|
|
"fmt"
|
|||
|
|
"os"
|
|||
|
|
"strconv"
|
|||
|
|
"strings"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
func main() {
|
|||
|
|
scanner := bufio.NewScanner(os.Stdin)
|
|||
|
|
scanner.Scan()
|
|||
|
|
lineText := scanner.Text()
|
|||
|
|
first := strings.Fields(lineText)
|
|||
|
|
res := 0
|
|||
|
|
var firstlist []int
|
|||
|
|
for _, v := range first {
|
|||
|
|
num, _ := strconv.Atoi(v)
|
|||
|
|
firstlist = append(firstlist, num)
|
|||
|
|
}
|
|||
|
|
n, p, q := firstlist[0], firstlist[1], firstlist[2]
|
|||
|
|
hash := make(map[string]int)
|
|||
|
|
for i := 0; i < n; i++ {
|
|||
|
|
scanner.Scan()
|
|||
|
|
lineText1 := scanner.Text()
|
|||
|
|
second := strings.Fields(lineText1)
|
|||
|
|
a, b, c := second[0], second[1], second[2]
|
|||
|
|
d := a + b + c
|
|||
|
|
hash[d]++
|
|||
|
|
}
|
|||
|
|
//fmt.Println(hash)
|
|||
|
|
for k, _ := range hash {
|
|||
|
|
//fmt.Println("当前k:", k)
|
|||
|
|
leftorright := string(k[0])
|
|||
|
|
red := string(k[len(k)-1])
|
|||
|
|
body := string(k[1 : len(k)-1])
|
|||
|
|
if leftorright == string("1") {
|
|||
|
|
target := string("0" + body + red)
|
|||
|
|
//fmt.Println("查询:", target)
|
|||
|
|
if value, ok := hash[target]; ok {
|
|||
|
|
if value > 0 {
|
|||
|
|
res += p
|
|||
|
|
hash[target]--
|
|||
|
|
hash[k]--
|
|||
|
|
continue
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if red == string("1") {
|
|||
|
|
target = string("0" + body + "2")
|
|||
|
|
} else {
|
|||
|
|
target = string("0" + body + "1")
|
|||
|
|
}
|
|||
|
|
if value, ok := hash[target]; ok {
|
|||
|
|
if value > 0 {
|
|||
|
|
res += q
|
|||
|
|
hash[target]--
|
|||
|
|
hash[k]--
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
//fmt.Println("当前hash:", hash)
|
|||
|
|
} else {
|
|||
|
|
target := string("1" + body + red)
|
|||
|
|
//fmt.Println("查询1:", target)
|
|||
|
|
if value, ok := hash[target]; ok {
|
|||
|
|
if value > 0 {
|
|||
|
|
res += p
|
|||
|
|
hash[target]--
|
|||
|
|
hash[k]--
|
|||
|
|
continue
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if red == string("1") {
|
|||
|
|
target = string("1" + body + "2")
|
|||
|
|
} else {
|
|||
|
|
target = string("1" + body + "1")
|
|||
|
|
}
|
|||
|
|
if value, ok := hash[target]; ok {
|
|||
|
|
if value > 0 {
|
|||
|
|
res += q
|
|||
|
|
hash[target]--
|
|||
|
|
hash[k]--
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
//fmt.Println("当前hash:", hash)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
fmt.Println(res)
|
|||
|
|
|
|||
|
|
}
|