记录编号 |
249317 |
评测结果 |
AWWWAWAAAW |
题目名称 |
饭堂 |
最终得分 |
50 |
用户昵称 |
asddddd |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
0.066 s |
提交时间 |
2016-04-12 15:43:54 |
内存使用 |
0.40 MiB |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <queue>
#include <functional>
#define maxn 11000
using namespace std;
int yuan[maxn],bian[maxn];
struct haha{
int v,wei;
bool fix;
};
bool operator <(const haha &a,const haha&b){
if (a.v!=b.v) {
return a.v>b.v;
}
else if(a.fix!=b.fix){
return a.fix<b.fix;
}
else if(a.fix==1){//a.fix==1 equals that change x into a lower num
return a.wei<b.wei;
}
else{
return a.wei>b.wei;
}
}
bool operator >(const haha&a ,const haha &b){
return !(a<b);
}
priority_queue<haha >que;
int n,k;
void get_input(){
cin>>n>>k;
for (int i=0; i<n; i++) {
char a;
cin>>a;
yuan[i]=a-'0';
}
}
void work(){
int ans=99999999;
queue<int>qua;
int shu;
for (int i=0; i<=9; i++) {
while (!que.empty()) {
que.pop();
}
queue<int>quee;
while (!quee.empty()) {
quee.pop();
}
for (int j=0; j<n; j++) {
haha a;
a.v=i-yuan[j];
if (a.v<0) {
a.v=-a.v;
a.fix=1;
}
a.wei=j;
que.push(a);
}
int anss=0;
int b=k;
while (b--) {
haha a=que.top();
que.pop();
quee.push(a.wei);
anss+=a.v;
}
if (anss<ans) {
ans=anss;
while (!qua.empty()) {
qua.pop();
}
while (!quee.empty()) {
int k=quee.front();
quee.pop();
qua.push(k);
shu=i;
}
}
}
cout<<ans<<endl;
while (!qua.empty()) {
int k=qua.front();
qua.pop();
yuan[k]=shu;
}
for (int i=0; i<n; i++) {
cout<<yuan[i];
}
}
int main(){
freopen("fancy.in", "r", stdin);
freopen("fancy.out", "w", stdout);
get_input();
work();
}