Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- vector<string> CategorySort(vector<string>& a, int index) //index == category(razryad)
- {
- vector <vector <string>> alphabet(28); //28 letters in alphabet
- vector<string> res;
- for (int i = 0; i < a.size(); ++i)
- alphabet[a[i][index] - 'a'].push_back(a[i]);//a[i] - string, index - the youngest razryad of a[i]
- for (int i = 0; i < alphabet.size(); ++i)
- {
- for (int j = 0; j < alphabet[i].size(); ++j)
- {
- res.push_back(alphabet[i][j]);
- }
- }
- return res;
- }
- vector<string> radixSort(vector<string>& a, int m, int k)
- {
- while (m > 0 && k > 0) //while array not sorted and all requests haven`t done
- {
- a = CategorySort(a, m - 1); //sorting by index (from last to first)
- --m, --k;
- return a;
- }
- }
- int main()
- {
- int n, m, k;
- cin >> n >> m >> k; //n - array`s size, m - string`s length, k - requests
- vector<string> a(n);
- for (int i = 0; i < n; ++i)
- cin >> a[i];
- vector<string> res = radixSort(a, m, k);
- for (int i = 0; i < res.size(); ++i)
- cout << res[i] << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement