#include #include std::vector journals; std::vector journals_copy; void load_data() { char c; while(std::cin >> c) { if (c == '+') journals.push_back(0); if (c == '-') journals.push_back(1); std::cin >> c; } } /*int pile_over_to_zeros() { int pile_overs = 0; for (int i = 0; i < journals.size(); i++) { if (journals[i] == 1) { pile_overs++; for (int j = i + 1; j < journals.size(); j++) { if (journals[j] == 1) i++; } } } return pile_overs; } int pile_over_to_ones() { int pile_overs = 0; for (int i = 0; i < journals.size(); i++) { if (journals[i] == 0) { pile_overs++; journals[i] = for (int j = i + 1; j < journals.size(); j++) { if (journals[j] == 0) i++; } } } return pile_overs; }*/ int pile_over() { int pile_overs_result = 2147483647; /*for (int x = 0; x < journals.size(); x++) { std::cout << journals[x] << ' '; } std::cout << '\n'; std::cout << '\n';*/ for (int x = 0; x < journals.size(); x++) { journals_copy.push_back(journals[x]); } for (int result = 0; result < 2; result++) { int pile_overs = 0; int not_result = (result == 0) ? 1 : 0; //std::cout << result << ":\n"; for (int i = 0; i < journals.size(); i++) { if (journals[i] == result) { pile_overs++; journals[i] = not_result; for (int j = i + 1; j < journals.size(); j++) { if (journals[j] == result) { journals[j] = not_result; i++; } else break; } /*for (int x = 0; x < journals.size(); x++) { std::cout << journals[x] << ' '; } std::cout << '\n';*/ } } //std::cout << '\n'; if (pile_overs_result > pile_overs) pile_overs_result = pile_overs; for (int x = 0; x < journals.size(); x++) { journals[x] = journals_copy[x]; } } return pile_overs_result; } int main() { load_data(); //int to_zeros = pile_over_to_zeros(); //int to_ones = pile_over_to_ones(); //std::cout << () ? to_ones : to_zeros << '\n'; //if (to_zeros > to_ones) std::cout << to_ones << "\n"; //else std::cout << to_zeros << "\n"; std::cout << pile_over() << '\n'; return 0; }