Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define int long long
- using namespace std;
- int n, k, f;
- int cnt[30];
- const int N = 1e3 + 228;
- string str[N], ar[N];
- void radixLSD() {
- for (int i = k - 1; i >= max(k - f, 0LL); -- i) {
- for (int j = 0; j < 26; ++ j) {
- cnt[j] = 0;
- }
- for (int j = 0; j < n; ++ j) {
- cnt[ar[j][i] - 'a']++;
- }
- int ans = 0;
- int tmp;
- for (int j = 0; j < 26; ++j) {
- tmp = cnt[j];
- cnt[j] = ans;
- ans += tmp;
- }
- for (int j = 0; j < n; ++j) {
- //cout << cnt[ar[j][i] - 'a'] + 1 << endl;
- str[cnt[ar[j][i] - 'a']] = ar[j];
- cnt[ar[j][i] - 'a']++;
- }
- for (int j = 0; j < n; ++j) {
- ar[j] = str[j];
- }
- }
- }
- int32_t main() {
- freopen("radixsort.in", "r", stdin);
- freopen("radixsort.out", "w", stdout);
- cin >> n >> k >> f;
- for (int i = 0; i < n; ++ i) {
- cin >> ar[i];
- }
- radixLSD();
- for (int i = 0 ; i < n; ++ i) {
- cout << ar[i] << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement