Anh Lộc làm nghề phụ hồ cho một công ty xây dựng, Anh nhận thấy rằng mỗi loại gạch đều có độ cứng khác nhau.
Giả sử rằng viên gạch có độ cứng k chỉ có thể chịu được tối đa k viên gạch khác chồng lên nó, nếu nhiều hơn thì nó sẽ bị vỡ.
Cho mảng a gồm n số nguyên dương lần lượt là độ cứng của các viên gạch.
Anh Lộc muốn lấy gạch và xếp chúng chồng lên nhau thành một chồng gạch cao nhất có thể mà không để vỡ viên gạch nào
Hãy tìm và in ra màn hình xem anh Lộc có thể xếp chồng gạch có độ cao lớn nhất là bao nhiêu.
—–
Input:
5
1 1 2 1 1
Output:
3
—–
Yêu cầu: Dùng Pascal
Code:
uses crt;
var a,l:array[0..100000000]of longint; n,i,j,t:longint;
begin
clrscr;
readln(n); a[0]:=high(longint);
for i:=1 to n do read(a[i]); readln;
for i:=1 to n do
for j:=i to n do
if a[i]<a[j] then begin t:=a[i]; a[i]:=a[j]; a[j]:=t; end;
for i:=n downto 0 do
for j:=i to n do if (l[i]<=l[j])and(a[i]>=l[j]) then begin l[i]:=l[j]+1; end;
writeln(l[0]-1);
readln
end.