Run Time: 0.003
Ranking (as of 2016-02-24): 8 out of 210
Language: C++
/* UVa 645 - File Mapping To build using Visual Studio 2012: cl -EHsc -O2 UVa_645_File_Mapping.cpp */ #include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; struct dir { const string name_; dir* parent_; vector<dir*> children_; vector<string> files_; dir(const string& name, dir* parent) : name_(name), parent_(parent) {} ~dir() { for (size_t i = 0, j = children_.size(); i < j; i++) delete children_[i]; } void print(int depth) { for (int d = 0; d < depth; d++) cout << "| "; cout << name_ << endl; for (size_t i = 0, j = children_.size(); i < j; i++) children_[i]->print(depth + 1); sort(files_.begin(), files_.end()); for (size_t i = 0, j = files_.size(); i < j; i++) { for (int d = 0; d < depth; d++) cout << "| "; cout << files_[i] << endl; } } }; int main() { for (int ds = 1; ; ds++) { string s; cin >> s; if (s == "#") break; if (ds > 1) cout << endl; dir* root = new dir("ROOT", NULL); dir* current = root; while (s != "*") { switch (s[0]) { case 'd': { dir* child = new dir(s, current); current->children_.push_back(child); current = child; } break; case 'f': current->files_.push_back(s); break; case ']': current = current->parent_; break; } cin >> s; } cout << "DATA SET " << ds << ":\n"; root->print(0); delete root; } return 0; }
No comments:
Post a Comment