记录编号 |
97943 |
评测结果 |
AAAAAAAAAA |
题目名称 |
注水猪肉 |
最终得分 |
100 |
用户昵称 |
cstdio |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.066 s |
提交时间 |
2014-04-21 11:38:56 |
内存使用 |
8.08 MiB |
显示代码纯文本
#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;
}