Problem:
Score : 900 points

Problem Statement

Takahashi has an empty string S and a variable x whose initial value is 0.

Also, we have a string T consisting of 0 and 1.

Now, Takahashi will do the operation with the following two steps |T| times.

Insert a 0 or a 1 at any position of S of his choice.

Then, increment x by the sum of the digits in the odd positions (first, third, fifth, ...) of S. For example, if S is 01101, the digits in the odd positions are 0, 1, 1 from left to right, so x is incremented by 2.

Print the maximum possible final value of x in a sequence of operations such that S equals T in the end.

Constraints

1 \leq |T| \leq 2 \times 10^5

T consists of 0 and 1.

Input

Input is given from Standard Input in the following format:

T

Output

Print the maximum possible final value of x in a sequence of operations such that S equals T in the end.

Sample Input 1

1101

Sample Output 1

5

Below is one sequence of operations that maximizes the final value of x to 5.

Insert a 1 at the beginning of S. S becomes 1, and x is incremented by 1.

Insert a 0 to the immediate right of the first character of S. S becomes 10, and x is incremented by 1.

Insert a 1 to the immediate right of the second character of S. S becomes 101, and x is incremented by 2.

Insert a 1 at the beginning of S. S becomes 1101, and x is incremented by 1.

Sample Input 2

0111101101

Sample Output 2

26

Solution in Go (1.14.1) (judge verdict: Time Limit Exceeded)

package main

import "fmt"

func main() {
	var T string
	fmt.Scan(&T)
	fmt.Println(F(T))
}

var mem = make(map[string]int)

func F(s string) int {
	if m, ok := mem[s]; ok {
		return m
	}

	addX := calcX(s)
	if len(s) == 1 {
		mem[string(s)] = addX
		return addX
	}

	v := 0
	for i := 0; i < len(s); i++ {
		// i番目の文字を消して次の文字を作る
		s2 := s[:i] + s[i+1:]
		v2 := F(s2)
		if v2 > v {
			v = v2
		}
	}
	mem[s] = addX + v
	return addX + v
}

func calcX(s string) int {
	ret := 0
	for i := 0; i < len(s); i += 2 {
		if s[i] == byte('1') {
			ret++
		}
	}
	return ret
}