#include #include using namespace std; typedef long long LL; const int N = 10010; int ps[N], nxt_caret[N], nxt_star[N]; string s; LL Solve(string t) { int n = s.size(); nxt_caret[n] = nxt_star[n] = n; ps[n] = 0; for (int i = n - 1; i >= 0; --i) { ps[i] = ps[i + 1] + (s[i] == ')'); nxt_caret[i] = s[i] == '^' ? i : nxt_caret[i + 1]; nxt_star[i] = s[i] == '*' ? i : nxt_star[i + 1]; } LL ret = 0LL; for (int i = 0; i < n; ++i) { if (s[i] != '(') continue; int pos = i + 1, j = 0; for (; j < 3; ++j) { pos = t[j] == '^' ? nxt_caret[pos] : nxt_star[pos]; if (pos >= n) break; ++pos; } if (j == 3) { ret += ps[pos]; } } return ret; } int main() { // freopen("emoticon.in", "r", stdin); // freopen("emoticon.out", "w", stdout); cin >> s; LL left = Solve("^^*"); LL right = Solve("*^^"); printf("%lld %lld\n", left, right); return 0; }