
Build Tower
– Minh là một kiến trúc sư, cách đây hai tháng, Minh được giao trọng trách xây một tòa nhà cao n tầng và mỗi tầng có chiều dài m mét, nhưng Minh chỉ được giao một lượng block nhất định và không thể thay đổi, mỗi block có chiều dài là 1 mét và chúng đều có khả năng chịu lực khác nhau, để thể hiện khả năng chịu lực của mỗi block người ta dùng thang điểm từ thấp đến cao để đánh giá nó và ghi vào một bảng points_of_blocks (block thứ i sẽ có giá trị points_of_blocks[1..n][i]).
– Biết rằng khối lượng tỉ lệ thuận với số điểm, nếu để những block có khả năng chịu lực kém lên trên những block nặng hơn thì tòa nhà sẽ sụp đổ ngay lập tức, cùng với đó, thường xuyên có các cơn gió mạnh từ phía bên phải của tòa nhà thổi tới, và đương nhiên là Minh không muốn để tòa nhà ngã đổ tí nào, vì thế nên Minh nghĩ ra cách đặt các block nặng hơn ở phía bên phải của tòa nhà.
Deadline nay đã dí vào mặt của Minh, Minh không tài nào xoay sở được nên Minh muốn nhờ đến tài năng của các bạn để tạo một sơ đồ sắp xếp các block, hãy giúp Minh xây một tòa nhà kiên cố nhé!
Chú ý:
- Thứ tự của tòa nhà được sắp xếp theo tầng cao nhất đến tầng thấp nhất, nghĩa là tầng cao nhất của tòa nhà sẽ xuất hiện đầu tiên sau đó mới tới các tầng tiếp theo.
- Càng lên cao, chiều dài của các tầng cũng có thể giảm đi.
Ví dụ:
- Với
n = 3
,m = 5
vàpoints_of_blocks = [[5, 7, 3, 2, 9], [1, 2, 3, 4, 2], [5, 7, 9, 9, 5]]
thìbuild_tower(n, m, points_of_block) = [[1, 2, 2, 2, 3], [3, 4, 5, 5, 5], [7, 7, 9, 9, 9]]
- Với
n = 5
,m = 3
vàpoints_of_blocks = [[14, 3, 10], [9, 13, 3], [9, 8, 13], [14, 9, 13], [10, 3, 9]]
thìbuild_tower(n, m, points_of_blocks) = [[3, 3, 3], [8, 9, 9], [9, 9, 10], [10, 13, 13], [13, 14, 14]]
Đầu vào/Đầu ra:
- [Thời gian chạy] 0.1s với C++, 0.6s với Java và C#, 0.8s với Python, Go và JavaScript.
- [Đầu vào] Integer – Integer – Matrix of Integers
1 <= n <= 10^5
1 <= m <= 10^4
1 <= points_of_blocks.length <= 10^4
1 <= points_of_blocks[i] <= 10^6
- [Đầu ra] Matrix of IntegersSơ đồ sắp xếp của các block.
Post Comment