#include #include using namespace std; using pii = pair; using ll = long long; using pll = pair; template struct ST { int n = 0; vector> v; ST(int _n) { n = _n; v = vector>(bit_width(n), vector(n, e())); } ST(vector _v) { n = _v.size(); v = vector>(bit_width(n), vector(n, e())); v[0] = _v; } void set(int i, S x) { v[0][i] = x; } void build() { for (int k = 1; k < v.size(); k++) { for (int i = 0; i <= n-(1<= r) return e(); int k = bit_width(r-l)-1; return op(v[k][l], v[k][r-(1<> n; ST st(n); for (int i = 0; i < n; i++) { ll x; cin >> x; st.set(i, x); } st.build(); ll ans = 0; for (int i = 0; i < n; i++) { int l = i+1, r = n; while (l <= r) { int x = (l+r)/2; if (st.query(i, x) == 1) r = x-1; else l = x+1; } ans += n-r; // cout << i << ": " << n-r << "\n"; } cout << ans; }