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 C++ (GCC 9.2.1) (judge verdict: Accepted)

#define DEBUG(...) cerr << __VA_ARGS__ << endl;

#ifndef CDEBUG
#undef DEBUG
#define DEBUG(...) ((void)0);
#define NDEBUG
#endif

#define ran(i, a, b) for (auto i = (a); i < (b); i++)

#include <bits/stdc++.h>
typedef long long ll;
typedef long double ld;
using namespace std;
const int mod = 1e9 + 7;
#ifndef M_PI
const double M_PI = acos(-1.0);
#endif


int main() {
  iostream::sync_with_stdio(false);
  string t;
  cin>>t;
  ll res = 0;
  int n = t.size();
  int cnt0 = 0;
  int cnt1 = 0;
  int pair1 = 0;
  for(int i=0; i<n; ++i){
    if(t[i] == '1'){
      ++cnt1;
      if(i!=n-1 && t[i+1] == '1'){
        ++pair1;
        ++i;
        ++cnt1;
      } else {
        res -= (cnt0+(i%2))/2;
      }
    } else {
      ++cnt0;
    }
  }
  res -= (ll)pair1*cnt0;
  for(int i=1; i<cnt1; i+=2){
    res -= cnt1;
  }
  for(int i=0; i<cnt1; i+=2){
    res -= i;
  }
  res += (ll)cnt1*n;
  cout<<res<<endl;
  return 0;
}