Ranking (as of 2013-06-08): 319 out of 551
Language: C++
/* UVa 10562 - Undraw the Trees To build using Visual Studio 2008: cl -EHsc -O2 undraw_the_trees.cpp */ #include <iostream> #include <string> #include <sstream> using namespace std; const int nr_lines_max = 200, nr_chrs_max = 200; string prof_tree[nr_lines_max + 1]; void print_tree(int nr_lines, int i, int j) { if (i == nr_lines) cout << "()"; else { const string& pt = prof_tree[i]; if (j >= pt.length()) cout << "()"; else if (pt[j] == ' ') cout << "()"; else if (pt[j] == '|') print_tree(nr_lines, i + 1, j); else if (pt[j] == '-') { while (j && pt[j - 1] == '-') j--; cout << '('; for ( ; pt[j] == '-'; j++) { if (j < prof_tree[i + 1].length() && prof_tree[i + 1][j] != ' ') print_tree(nr_lines, i + 1, j); } cout << ')'; } else { cout << pt[j]; print_tree(nr_lines, i + 1, j); } } } int main() { string s; getline(cin, s); istringstream iss(s); int t; iss >> t; while (t--) { int nr_lines = 0; while (true) { getline(cin, prof_tree[nr_lines]); if (prof_tree[nr_lines][0] == '#') break; nr_lines++; } cout << '('; if (nr_lines) { const string& pt = prof_tree[0]; for (int j = 0, e = pt.length(); j < e; j++) if (pt[j] != ' ') { cout << pt[j]; print_tree(nr_lines, 1, j); } } cout << ")\n"; } return 0; }
No comments:
Post a Comment