Ranking (as of 2013-01-19): 179
Language: C++
/* UVa 450 - Little Black Book To build using Visual Studio 2008: cl -EHsc -O2 UVa_450_Little_Black_Book.cpp */ #include <iostream> #include <vector> #include <string> #include <algorithm> #include <cstring> using namespace std; const int nr_fields = 7; struct record { int idepartment_; int ifields_[nr_fields]; string info_; }; bool compare_record(const record* i, const record* j) { return strcmp(i->info_.c_str() + i->ifields_[2], j->info_.c_str() + j->ifields_[2]) < 0; } int main() { int nr_departments; cin >> nr_departments; string s; getline(cin, s); vector<string> departments(nr_departments); vector<record*> records; for (int i = 0; i < nr_departments; i++) { getline(cin, departments[i]); while (true) { record* r = new record(); if (!getline(cin, r->info_) || r->info_.empty()) { delete r; break; } r->idepartment_ = i; r->ifields_[0] = 0; for (int j = 1, p = 0; j < nr_fields; j++) { p = r->info_.find(',', p); r->info_[p] = '\0'; r->ifields_[j] = ++p; } records.push_back(r); } } sort(records.begin(), records.end(), compare_record); for (vector<record*>::const_iterator ri = records.begin(), re = records.end(); ri != re; ++ri) { record* r = *ri; const char* info = r->info_.c_str(); cout << "----------------------------------------\n"; cout << info + r->ifields_[0] << ' ' << info + r->ifields_[1] << ' ' << info + r->ifields_[2] << endl; cout << info + r->ifields_[3] << endl; cout << "Department: " << departments[r->idepartment_] << endl; cout << "Home Phone: " << info + r->ifields_[4] << endl; cout << "Work Phone: " << info + r->ifields_[5] << endl; cout << "Campus Box: " << info + r->ifields_[6] << endl; } return 0; }
No comments:
Post a Comment