比赛 20140421 评测结果 AAAAAAAAAA
题目名称 注水猪肉 最终得分 100
用户昵称 cstdio 运行时间 0.067 s
代码语言 C++ 内存使用 8.08 MiB
提交时间 2014-04-21 09:06:57
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<fstream>
using namespace std;
ifstream fin("boss.in");
ofstream fout("boss.out");
const int BASE=10,SIZEL=2010,SIZEN=1010;
class HPINT{
public:
	int len;
	int s[SIZEL];
	void clear(void){
		memset(s,0,sizeof(s));
		len=1;
	}
	void operator += (HPINT &b){
		len=max(len,b.len);
		int i;
		for(i=0;i<len;i++) s[i]+=b.s[i];
		for(i=0;i<len||s[i];i++){
			s[i+1]+=s[i]/BASE;
			s[i]%=BASE;
		}
		if(i>len) len=i;
		while(len>1&&!s[len-1]) len--;
	}
	void init(string &str){
		len=str.size();
		for(int i=len-1;i>=0;i--) s[i]=str[len-1-i]-'0';
	}
	void print490(void){
		for(int i=490-1;i>=0;i--) fout<<s[i];
		fout<<endl;
	}
};
int cmpHP(HPINT &a,HPINT &b){//a<bΪ-1,a=bΪ0,a>bΪ1
	if(a.len<b.len) return -1;
	if(a.len>b.len) return 1;
	for(int i=a.len-1;i>=0;i--){
		if(a.s[i]<b.s[i]) return -1;
		if(a.s[i]>b.s[i]) return 1;
	}
	return 0;
}
string name[SIZEN];
HPINT flood[SIZEN];
HPINT sum;
int N;
int lis[SIZEN];
bool cmpint(int a,int b){
	int flag=cmpHP(flood[a],flood[b]);
	if(flag==1) return true;
	if(flag==-1) return false;
	return name[a]<name[b];
}
void work(void){
	sort(lis+1,lis+1+N,cmpint);
	sum.clear();
	for(int i=1;i<=N;i++){
		fout<<name[lis[i]]<<endl;
		sum+=flood[i];
	}
	sum.print490();
}
void read(void){
	fin>>N;
	string str;
	for(int i=1;i<=N;i++){
		lis[i]=i;
		fin>>name[i];
		fin>>str;
		flood[i].init(str);
	}
}
int main(){
	read();
	work();
	fin.close();
	fout.close();
	return 0;
}