Bài viết: 28 



Link bài:
Thuật toán:
Thuật toán:
- Ta sẽ dùng đệ quy và 2 con trỏ để giải quyết bài này.
- Với con trỏ i, j trên 2 mảng a, b nếu a< b[j] ta sẽ in ra "ai" và tiếp tục với i+1, j.
Mã:
#include <bits/stdc++.h>
using namespace std;
int c[107], b[107], n, m;
void doit(int i, int j){
if (b[i] <= c[j] && i <= n && j <= m) {cout << "b" << i << " "; doit(i+1, j);} else
if (b[i] >= c[j] && i <= n && j <= m) {cout << "c" << j << " "; doit(i, j+1);} else
if (i > n && j <= m) {cout << "c" << j << " "; doit(i, j+1);} else
if (i <= n && j > m) {cout << "b" << i << " "; doit(i+1, j);}
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
//freopen("xstron.inp", "r", stdin);
//freopen("xstron.out", "w", stdout);
cin >> n >> m;
for (int i = 1; i <= n; i++) cin >> b[i];
for (int i = 1; i <= m; i++) cin >> c[i];
sort(c+1, c+m+1); sort(b+1, b+n+1);
doit(1, 1);
return 0;
}