您的位置:首页 > 其它

宇宙总统-洛谷 1781

2017-01-12 19:38 183 查看
题意:


题目背景

宇宙总统竞选


题目描述

地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有n个非凡拔尖的人竟选总统,现在票数已经统计完毕,请你算出谁能够当上总统。

输入格式:

president.in

第一行为一个整数n,代表竞选总统的人数。

接下来有n行,分别为第一个候选人到第n个候选人的票数。

输出格式:

president.out

共两行,第一行是一个整数m,为当上总统的人的号数。

第二行是当上总统的人的选票。
输入样例:  输出样例:
5            4

98765        1022356

12365

87954

1022356

985678

题解:

数据太大,可以用字符串数组来储存输入的n个数。注意Pascal字符串直接比较大小无法得出正确结果,可以用c[i]来放每个数的长度,以长度为第一关键字,字符串为第二关键字,进行排序。 

排序可以用快排、冒泡等都可以。 

时间复杂度O(n*n) 反正n很小。

var

  n,i,j:longint;

  a:array[0..20]of string;

  b,c:array[0..20]of longint;

begin

  readln(n);

  for i:=1 to n do

    begin

      b[i]:=i;

      readln(a[i]);

      c[i]:=length(a[i]);

    end;

  for i:=1 to n-1 do

    for j:=i+1 to n do

      if (c[i]<c[j])or((a[i]<a[j])and(c[i]=c[j])) then

        begin

          a[0]:=a[i];

          a[i]:=a[j];

          a[j]:=a[0];

          b[0]:=b[i];

          b[i]:=b[j];

          b[j]:=b[0];

          c[0]:=c[i];

          c[i]:=c[j];

          c[j]:=c[0];

        end;

  writeln(b[1]);

  writeln(a[1]);

end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: