题解 P1407 【工资】
不难,但蒟蒻的快排显然不行。因为空间限制是1MB……开数组?MLE准备~
好啦,闲话少说,下面进入正题!
首先,这题实际上就是求众数的改(wei)进(suo)版。于是,我们开了数组,结果MLE了……好吧,换方法。
我们可以开个变量a来记录一组数中谁出现的次数最多,具体实现请看代码。
program gold;
var
i,j,t,n,a,s,x:longint;
begin
readln(t);
for i:=1 to t do
begin
a:=0;{初始化数据}
read(n);
for j:=1 to n do
begin
read(x);
if a=0 then s:=x;
**if s=x then inc(a) else dec(a);**{核心代码!如果s=x的话,a增加1,否则a减少1。也就是说,s等于上一个数,就增加a,反之s不等于上一个数,a就减1.如果a减成了零,说明此数不是众数,舍去}
end;
writeln(s);{输出}
end;
end.