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 PHP (7.4.4) (judge verdict: Accepted)

<?php

fscanf(STDIN, "%s", $N);
$array = str_split($N);
$length = count($array);
$list = [];
$copy = $array;
$k=1;
$ans = 0;
$last = -1;
$t=0;
for($i=0;$i<$length-1;$i++){
    if($array[$i] === "1"){
        if($array[$i+1] === "0"){
            $list[] = $i;
            $list[] = $i+1;
            unset($copy[$i]);
            unset($copy[$i+1]);
            $i++;

            $ans += $k*2;
            $k++;
            $last = -1;
        }else{

            if(isset($array[$i+2])){
                if(!isset($array[$i+4]) && $array[$i+1] ==="1" && $array[$i+2]==="1" && $array[$i+3]==="1"){
                    $list[] = $i;
                    $list[] = $i+1;
                    $list[] = $i+2;
                    $list[] = $i+3;
                    unset($copy[$i]);
                    unset($copy[$i+1]);
                    unset($copy[$i+2]);
                    unset($copy[$i+3]);
                    $i+=3;

                    $ans += $k*2;
                    $k++;

                    $ans += $k*2;
                    $k++;
                    $t = 1;
                    $last = -1;
                }elseif($array[$i+2] === "1"){
                    $list[] = $i;
                    $list[] = $i+1;
                    unset($copy[$i]);
                    unset($copy[$i+1]);
                    $i++;

                    $ans += $k*2;
                    $k++;
                    $last = -1;
                }else{
                    $list[] = $i;
                    $list[] = $i+2;
                    unset($copy[$i]);
                    unset($copy[$i+2]);
                    $i+=2;

                    $ans += $k*2;
                    $k++;
                    $last = -1;
                }

            }elseif($array[$i+1]==="1"){
                $list[] = $i;
                $list[] = $i+1;
                unset($copy[$i]);
                unset($copy[$i+1]);
                $i++;

                $ans += $k*2;
                $k++;
                $last = -1;
                $t = 1;
            }else{
                $last = $i;
            }
        }
    }
}
if(count($copy)===0){
    echo$ans;
    exit;
}
if($last >= 0 ){
    $ans += $k;
    $list[] = $last;
    unset($copy[$i]);
}elseif($array[$length-1] === "1" && $t === 0) {
    $ans += $k;
    $list[] = $length-1;
    unset($copy[$i]);
}else{
    if(count($list) === 0){
        echo 0;
        exit;
    }
    $k--;
}
krsort($copy);
$reverse = 0;
$truth = 0;
$next = count($list)-1;
//$next = $list[$list_count];
foreach($copy as $key=>$value){

    if( $next >= 0 && $key < $list[$next]){

            while ($key < $list[$next]) {
                if($array[$list[$next]] === "1"){

                    if($next % 2 === 0){
                        $truth++;
                        $k--;
                    }else{
                        $reverse++;
                    }

                }
//                if ($next === 0) {
//                    break;
//                }

                $next--;
                if($next < 0){
                    break;
                }
            }


    }
    if( $next === -1 || $key > $list[$next]){

        if($value === "1"){
            if($next % 2 === 0){
                $truth++;
            }else{
                $reverse++;
            }

        }
        $tmp = $truth ;
        $truth = $reverse;
        $reverse = $tmp;
        $ans += $k + $truth;
    }
}
echo $ans;