Mô tả bài toán
Cho mảng. Với mỗi phần tử, tìm floor trong mảng (phần tử lớn nhất ≤ nó, khác chính nó nếu có trùng). Nếu không có → -1.
Ví dụ
arr={3,1,5,7,8,2} → Output: 2 -1 3 5 7 1.
Giải thuật
Sao chép mảng, sắp xếp. Với mỗi phần tử gốc, dùng lower_bound trên mảng sắp xếp. Xử lý trường hợp trùng lặp: nếu phần tử là nhỏ nhất và không trùng → -1; nếu trùng → floor là chính nó; ngược lại floor là phần tử trước lower_bound.
Mã nguồn C++
#include <bits/stdc++.h>
using namespace std;
void printFloorEle(int arr[], int n) {
vector sorted(arr, arr+n);
sort(sorted.begin(), sorted.end());
for (int i=0; i
Đầu ra
The Floor of every element of the given array is 2 -1 3 5 7 1