比赛 20140421 评测结果 AATTTTATTT
题目名称 注水猪肉 最终得分 30
用户昵称 Dijkstra 运行时间 7.004 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2014-04-21 10:55:11
显示代码纯文本
#include<fstream>
#include<string>
#include<algorithm>
using namespace std;
ifstream fin("boss.in");
ofstream fout("boss.out");
int N;
struct boss
{
	string name;
	string n;
}b[1000];
string PLUS(string a,string b)
{
	int ans[2000]={0},aa[2000]={0},bb[2000]={0},la=a.length(),lb=b.length();
	int i;
	for(i=0;i<la;i++) aa[i]=int(a[la-i-1]-'0');
	for(i=0;i<lb;i++) bb[i]=int(b[lb-i-1]-'0');
	int s=0;
	for(i=0;i<=max(la,lb);i++)
	{
		ans[i]=(aa[i]+bb[i])%10+s;
		s=(aa[i]+bb[i])/10;
	}
	string ST="";
	for(i=max(la,lb)-(ans[max(la,lb)]==0);i>=0;i--) ST+=char(ans[i]+'0');
	return ST;
}
bool cmp(boss a,boss b)
{
	if(a.n.length()>b.n.length()) return 1;
	if(a.n.length()==b.n.length()&&a.n>b.n) return 1;
	if(a.n==b.n&&a.name<b.name) return 1;
	return 0;
}
int main()
{
	fin>>N;
	int i;
	for(i=0;i<N;i++) fin>>b[i].name>>b[i].n;
	sort(b,b+N,cmp);
	string sum="0";
	for(i=0;i<N;i++)
	{
		fout<<b[i].name<<endl;
		sum=PLUS(sum,b[i].n);
	}
	for(i=1;i<=490-sum.length();i++) fout<<"0";
	for(i=max(0,int(sum.length())-490);i<sum.length();i++) fout<<sum[i];
	fout<<endl;
	return 0;
}