• 猪王争霸


    Description

    工商部门查获了有N个人正在贩卖注水猪肉,现在要你对这N个人的注水猪肉的数量从大到小的排序,并且算出这N个人的注水猪肉总和(单位为…..斤)…我们姑且称这些贩卖者为”猪王”吧..

    Input

    输入的第一行是一个1到1000的整数N,表示总共有N位猪王参加了争霸赛。以下依次给出每位猪王的描述,一位猪王的描述占据两行,第一行为一个仅由小写字母组成的长度不超过13的字符串,代表这个猪王的名字,第二行一个整数(非负数,<10^2000),代表这个猪王的注水猪肉总斤数。注意,这个整数的首位没有不必要的0。所有猪王贩卖的注水猪肉数量的总长度不会超过2000。

    Output

    依次输出按照注水猪肉多少从大到小排好序的各位贩卖者的名字,每个名字占据单独的一行。不能有任何多余的字符。若几个名字的注水猪肉数相同,则按照名字的字典顺序先后排列。(名字长度<=13且均为大写字母),在N+1行输出所有猪王贩卖注水猪肉的数量的总和(输出最后490位)

    Sample Input

    5
    ABC
    123
    ABCD
    1234
    ABCDE
    12345
    ABCDEF
    123456
    ABCDEFG
    1234567

    Sample Output

    ABCDEFG
    ABCDEF
    ABCDE
    ABCD
    ABC
    0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001371725

    分析
    排序+高精

    程序:

    const
    maxn=2050;
    
    var
    n,i,j,l1,l2:longint;
    a,b:array[0..maxn]of ansistring;
    c:array[0..maxn]of longint;
    
    procedure jia(k:longint);
    var
    i,j:longint;
    begin
         for i:=length(b[k]) downto 1 do
         inc(c[maxn-length(b[k])+i],ord(b[k][i])-48);
         for i:=maxn downto maxn-500 do
         begin
             c[i-1]:=c[i-1]+c[i] div 10;
             c[i]:=c[i] mod 10;
         end;
    end;
    
    
    begin
        readln(n);
        for i:=1 to n do
        begin
            readln(a[i]);
            readln(b[i]);
        end;
        for i:=1 to n do
        jia(i);
        for i:=1 to n-1 do
        for j:=i+1 to n do
        begin
            l1:=length(b[i]);
            l2:=length(b[j]);
            if (l1<l2)or((l1=l2)and(b[i]<b[j]))or((l1=l2)and(b[i]=b[j])and(a[i]>a[j])) then
            begin
                b[0]:=b[i];b[i]:=b[j];b[j]:=b[0];
                a[0]:=a[i];a[i]:=a[j];a[j]:=a[0];
            end;
        end;
        for i:=1 to n do
        writeln(a[i]);
        for i:=maxn-490+1 to maxn do
        write(c[i]);
    end.
    
  • 相关阅读:
    导入已有项目到svn
    Linux用ICMP协议实现简单Ping网络监测功能
    c++ tcp 服务器和客户端例子
    C++ Socket 编程
    c++工厂模式和多线程结合
    Linux中ls命令详解
    Mac OS X 11中的/usr/bin 的“Operation not permitted”
    Warning: mysql_connect(): No such file or directory 解决方案总结(操作系统: Mac)
    页面组件渲染小组件(重点)
    Vue 路由
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/9500058.html
Copyright © 2020-2023  润新知