#![allow(non_snake_case)] use proconio::input; use proconio::marker::Chars; fn main() { input! { S: Chars, } let N = S.len(); enum State { Start, NextOne, } use State::*; let mut ans = 0usize; let mut state = State::Start; let mut right = N; for i in (0 .. N).rev() { match state { Start => { if S[i] == '0' { // none } else { state = NextOne; } } NEXT_ONE => { if S[i] == '0' { right -= 1; state = Start; } else { right -= 2; ans += right - i; state = Start; } } } } println!("{ans}"); }