import "fmt"
type Stack struct {
values []int
}
func (stack *Stack) push(n int) {
stack.values = append(stack.values, n)
}
func (stack *Stack) pop() {
stack.values = stack.values[:len(stack.values)-1]
}
func sti(s string) int {
var i int
n := false
if s[0] == '-' {
n = true
i++
}
var num int
for ;i<len(s); i++ {
num = (num*10)+int(s[i])-48
}
if n {
return -num
}
return num
}
func is_numder(s string) bool{
for _, c := range s {
if !((47 < c && c < 58) || c == '-') {
return false
}
}
return true
}
func calPoints(operations []string) int {
var stack Stack
for _, o := range operations {
if is_numder(o) {
n := sti(o)
stack.push(n)
}
if o == "+" {
l := len(stack.values)
stack.push(stack.values[l-2]+stack.values[l-1])
}
if o == "D" {
stack.push(stack.values[len(stack.values)-1]*2)
}
if o == "C" {
stack.pop()
}
}
var ans int
for _, v := range stack.values {
ans += v
}
fmt.Println(stack.values)
return ans
}