#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { int i, j, k; string s; vector>rkako, lkako(1, vector(1,0)); cin >> s; /* int r = 0, l = 0; for (i = 0; i < s.length(); i++) { if (s[i] == '(') { int num = lkako[i][0]; lkako[i + 1].push_back(num + 1); l++; num = rkako[i][0]; rkako[i + 1].push_back(num); } else if (s[i] == ')') { int num = rkako[i][0]; rkako[i + 1].push_back(num + 1); r++; num = lkako[i][0]; lkako[i + 1].push_back(num); } else { int num = rkako[i][0]; rkako[i + 1].push_back(num); num = lkako[i][0]; lkako[i + 1].push_back(num); } } */ int rcnt = 0, lcnt = 0; int saku = 0; bool asu = false; //アスタリスクが三角二個の後にあったらtrueになる for (i = 0; i < s.length(); i++) { saku = 0; asu = false; if (s[i] == '(') { for (j = i + 1; j < s.length(); j++) { if (s[j] == '^') { saku++; } if (s[j] == '*' && saku >= 2) { asu = true; } if (asu == true && s[j] == ')') { lcnt++; } } } } for (i = s.length() - 1; i >= 0; i--) { saku = 0; asu = false; if (s[i] == ')') { for (j = i - 1; j >= 0; j--) { if (s[j] == '^') { saku++; } if (s[j] == '*' && saku >= 2) { asu = true; } if (asu == true && s[j] == '(') { rcnt++; } } } } cout << lcnt << " " << rcnt << endl; getchar(); getchar(); return 0; }