比赛 |
20160412 |
评测结果 |
AWWWAWAAAW |
题目名称 |
饭堂 |
最终得分 |
50 |
用户昵称 |
Satoshi |
运行时间 |
0.211 s |
代码语言 |
C++ |
内存使用 |
0.43 MiB |
提交时间 |
2016-04-12 08:57:15 |
显示代码纯文本
#include <fstream>
#include <algorithm>
#include <cstring>
#define N 10010
#define M 11
using namespace std;
ifstream in("fancy.in");
ofstream out("fancy.out");
char s[N];
int n,m,K;
int fuck[N]={0};
int INF=(1<<28);
int ans=0,P;
string S[M]={""};
class node
{
public:
int val;
int pos;
void print()
{
out<<val<<' '<<pos<<endl;
}
}D[N];
bool operator <(node a,node b)
{
if(a.val==b.val)return a.pos>b.pos;
else return a.val<b.val;
}
void read()
{
int i;
in>>n>>K;
for(i=1;i<=n;i++)
{
in>>s[i];
fuck[i]=s[i]-'0';
}
/*for(i=1;i<=n;i++)out<<fuck[i]<<' ';
out<<endl;*/
}
void work()
{
int i,k,temp=0;
ans=INF;
for(k=0;k<=9;k++)
{
for(i=1;i<=n;i++)
{
D[i].val=abs(fuck[i]-k);
D[i].pos=i;
}
sort(D+1,D+n+1);
temp=0;
for(i=1;i<=K;i++)temp+=D[i].val;
if(temp<ans)ans=temp;
}
out<<ans<<endl;
}
void rework()
{
int i,k,temp=0,m=0;
for(k=0;k<=9;k++)
{
for(i=1;i<=n;i++)
{
D[i].val=abs(fuck[i]-k);
D[i].pos=i;
}
sort(D+1,D+n+1);
temp=0;
for(i=1;i<=K;i++)temp+=D[i].val;
if(temp==ans)
{
m++;
for(i=1;i<=n;i++)S[m]=S[m]+char(fuck[i]+'0');
for(i=1;i<=K;i++)S[m][D[i].pos-1]=char(k+'0');
//out<<m<<' '<<S[m]<<endl;
}
}
sort(S+1,S+m+1);
out<<S[1]<<endl;
//out<<ans<<endl;
}
int main()
{
read();
work();
rework();
return 0;
}