比赛 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;
}