【題解】Codeforces 1348C. Phoenix and Distribution

【題目敘述】http://codeforces.com/contest/1348/problem/C

#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
 
int t, n, k;
string s;
map <char, int> mp;
 
int main() {
    cin >> t;
    while (t--){
        cin >> n >> k;
        cin >> s;
        sort(s.begin(), s.end());
        if (s[0] != s[k-1]){
            cout << s[k-1] << "\n";
            continue;
        }
        mp.clear();
        for (int i = 0; i < n; i++){
            mp[s[i]]++;
        }
        if (mp.size() == 1){
            int num = (n-1)/k+1;
            cout << s.substr(0, num) << "\n";
        }
        else if (mp.size() == 2 && mp[s[0]] == k){
            int num = (mp[s[k]]-1)/k+2;
            cout << s.substr(k-1, num) << "\n";
        }
        else {
            cout << s.substr(k-1) << "\n";
        }
    }
}
分享本文 Share with friends