Bạn đang cầm các lá bài đã sắp xếp. Khi nhận thêm một lá bài mới, hãy chèn nó vào đúng vị trí để tay bài vẫn được sắp xếp. In ra mảng bài sau mỗi lần chèn.
Dấu hiệu: "Chèn vào mảng đã sắp xếp" → đây chính là 1 bước của Insertion Sort.
Thuật toán: Insertion Sort — thao tác chèn cốt lõi.
#include <bits/stdc++.h>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin >> n;
vector<int> hand;
for (int i = 0; i < n; i++) {
int card;
cin >> card;
// Tìm vị trí chèn (dùng lower_bound từ <algorithm>)
auto pos = lower_bound(hand.begin(), hand.end(), card);
hand.insert(pos, card);
// In trạng thái tay bài
for (int j = 0; j < hand.size(); j++) {
cout << hand[j];
if (j < hand.size() - 1) cout << " ";
}
cout << "\n";
}
return 0;
}
lower_bound() từ <algorithm> dùng Binary Search → tìm vị trí chèn trong O(log n). Nhưng vector::insert() vẫn O(n) vì phải dịch phần tử.