#include #include using namespace std; using i32 = int; using i64 = long long; #define int i64 signed main() { int n; cin >> n; string s; cin >> s; vector conv(n); int actual = 1; for (int i = 0; i < n; i++){ if (s[i] == '+') { conv[i] = actual++; } } actual = -1; for (int i = n - 1; i >= 0; i--) { if (s[i] == '-') { conv[i] = actual--; } } vector vals; vals.push_back(conv[0]); for (int i = 1; i < n; i++) { if (vals.back() < conv[i]) { vals.push_back(conv[i]); continue; } int pos = upper_bound(vals.begin(), vals.end(), conv[i]) - vals.begin(); vals[pos] = conv[i]; } cout << vals.size() << endl; }