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)
|
||
|
||
}
|