// 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