Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- void fast_io() { ios_base::sync_with_stdio(false); cin.tie(0); }
- unsigned long long gcd(unsigned long long a, unsigned long long b) {
- if(b == 0)
- return a;
- else
- return gcd(b, a % b);
- }
- int main () {
- fast_io();
- int n, k;
- cin >> n >> k;
- string s;
- cin >> s;
- map<int, int> m;
- for(int i = 0; i < n; i++) {
- m[s[i] - '0']++;
- }
- int sum = INT_MAX;
- char number;
- int diff = 0;
- for(auto& item : m)
- {
- int temp_diff = 0;
- int temp_sum = 0;
- int temp_k = k;
- temp_k -= m[item.first];
- if(temp_k > 0) {
- int l = item.first - 1;
- int r = item.first + 1;
- while(true)
- {
- if(l >= 0) {
- int temp_del = min(m[l], temp_k);
- temp_k -= temp_del;
- temp_sum += temp_del * (item.first - l);
- if(m[l] != 0)
- temp_diff = item.first - l;
- l--;
- }
- if(temp_k <= 0)
- break;
- if(r <= 9)
- {
- int temp_del = min(m[r], temp_k);
- temp_k -= temp_del;
- temp_sum += temp_del * (r - item.first);
- if(m[r] != 0)
- temp_diff = r - item.first;
- r++;
- }
- if(temp_k <= 0)
- break;
- }
- }
- if(temp_sum < sum)
- {
- sum = temp_sum;
- diff = temp_diff;
- number = item.first + '0';
- }
- }
- cout << sum << endl;
- for(int i = 0; i < n; i++) {
- if(k != 0) {
- if(abs(s[i] - number) <= diff)
- s[i] = number;
- if(s[i] == number)
- {
- k--;
- }
- }
- cout << s[i];
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement