// UVa 755 - 487--3279 #include <string> #include <map> #include <vector> #include <algorithm> #include <iostream> using namespace std; map<int, int> reps; vector<int> duplicates; int strtoint(const string & word) { int ordinal = 0; for (int i = 0; i < word.length(); i++) { if (word[i] == '-') continue; int val; if ('0' <= word[i] && word[i] <= '9') val = word[i] - '0'; else if ('A' <= word[i] && word[i] <= 'R') val = (word[i] - 'A') / 3 + 2; else if (word[i] == 'S') val = 7; else if ('T' <= word[i] && word[i] <= 'V') val = 8; else if ('W' <= word[i] && word[i] <= 'Y') val = 9; ordinal = ordinal * 10 + val; } return ordinal; } int main() { int t; for (cin >> t; t; t--) { reps.clear(); duplicates.clear(); int n; for (cin >> n; n; n--) { string word; cin >> word; int ordinal = strtoint(word); reps[ordinal]++; if (reps[ordinal] == 2) duplicates.push_back(ordinal); } if (duplicates.size() > 0) { sort(duplicates.begin(), duplicates.end()); for (int i = 0; i < duplicates.size(); i++) { int left = duplicates[i] / 10000; int right = duplicates[i] % 10000; if (left < 100) cout << "0"; if (left < 10) cout << "0"; cout << left << "-"; if (right < 1000) cout << "0"; if (right < 100) cout << "0"; if (right < 10) cout << "0"; cout << right << " " << reps[duplicates[i]] << endl; } } else cout << "No duplicates." << endl; if (t > 1) cout << endl; } return 0; }
Monday, May 4, 2015
UVa 755 - 487--3279
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment