VetMini
Ăn cùng góc phố
- Tham gia
- 21/12/12
- Bài viết
- 17,060
- Giải pháp
- 4
- Được thích
- 23,527
- Điểm
- 7,168
var
a,b:array[1..1000000] of longint;
n,i,max: longint;
begin
read(n); // đọc vào số phần tử trong mảng
for i:=1 to n do read(a);
fillchar(b,sizeof(b),0); //tạo mảng b có toàn phần tử có giá trị bằng 0
for i:=1 to n do inc(b[a]);// đếm xem mỗi phần tử trong mảng a xuất hiện bao nhiêu lần
max:=0; // gán giá trị lớn nhất bằng 0 để so sánh
for i:=1 to n do
if b> max then max:=b; // tìm số lần xuất hiện nhiều nhất;
for i:=1 to n do
begin
if b= max then break;// tìm lại xem số xuất hiện nhiều nhất là bao nhiêu tìm được rồi thì dừng lại
end;
write(i,' ',max);
end.
với cách làm này thì ko thể chạy quá thời gian đối vs những test cỡ lớn đc ạ vì e học chuyên tin nên mấy bài này cũng làm rồi nên cũng khá chắc chắn.
Em học chuyên tin dở bẹt.
Theo thuật toán của em thì phải duyệt mảng ít nhất 2 lần (trung bình là 2,5 lần), môt lần cộng tầng số, mọt lần duyệt lấy tầng số cao nhất, và một lần tìm trị (tuy lần này có thể thoát sớm, có thể coi như 0,5 trung bình)