#include #include #include #include using namespace std; int main(int argc, char* argv[]) { string str_in; string openers = "([{<"; string closers = ")]}>"; vector all_results; while(cin >> str_in) { stack parser; unsigned long long result = 0; bool bl_is_corrupted = false; for(unsigned int i = 0; i < str_in.size(); i++) { size_t found_pos; if (openers.find(str_in[i])!=string::npos) { parser.push(str_in[i]); } else if ((found_pos=closers.find(str_in[i]))!=string::npos) { if (parser.top() != openers[found_pos]) { bl_is_corrupted = true; break; } else { parser.pop(); } } } if (bl_is_corrupted) { continue; } while(!parser.empty()) { result*=5; result+=1+openers.find(parser.top()); parser.pop(); } all_results.push_back(result); } sort(all_results.begin(),all_results.end()); cout << all_results[all_results.size()/2] << endl; return 0; }