Người Gửi: Sai
- Problem:
Tí đố Tèo một bài toán về mã hóa khá dị. Dãy số gồm có N phần tử, và mỗi phần tử đều không vượt quá giá trị C. Quy tắc mã hóa của Tí như sau:
1) Các phần tử có giá trị bằng nhau sẽ xuất hiện liên tiếp thành chuỗi.
2) 2 phần tử X và Y có giá trị khác nhau, chuỗi phần tử X sẽ xuất hiện trước chuỗi phần tử Y nếu như số lần xuất hiện của X lớn hơn. Trong trường hợp số lần xuất hiện của 2 phần tử bằng nhau, chuỗi nào có phần tử xuất hiện trước trong dãy số ban đầu sẽ xuất hiện trước.
Các bạn hãy giúp Tèo giải mã thách đố của Tí nào!
Input
Dòng đầu tiên gồm 2 số nguyên N (1 ≤ N ≤ 1 000) và C (1 ≤ C ≤ 1 000 000 000), lần lượt là số phần tử của dãy số và giới hạn của các phần tử.
Dòng tiếp theo gồm N số, các số đều có giá trị nhỏ hơn hoặc bằng C.
Output
In ra dãy số sau khi được mã hóa.
Example:
Input
5 2
2 1 2 1 2
Output:
2 2 2 1 1
Input
9 3
1 3 3 3 2 2 2 1 1
Output:
1 1 1 3 3 3 2 2 2
Input
9 77
11 33 11 77 54 11 25 25 33
Output:
11 11 11 33 33 25 25 77 54
- Solution:
Input
9 3
1 3 3 3 2 2 2 1 1
Output:
1 1 1 3 3 3 2 2 2
Input
9 77
11 33 11 77 54 11 25 25 33
Output:
11 11 11 33 33 25 25 77 54
- Tạo mảng struct bao gồm giá trị của số, số lượng số đó trong dãy, vị trí bắt đầu xuất hiện
- Đọc dữ liệu vào.
- Nếu số đó chưa có trong mảng thì có nghĩa số đó là số mới -> lưu vị trí đầu tiên và khởi tạo số lượng số =1;
- Nếu số đó đã có trong mảng thì chỉ cần đếm thôi.
- Cuối cùng là sắp xếp theo yêu cầu của đề và in.
(Code dưới đây sử dụng sort trong thư viện - Sẽ được giải thích trong series bài đăng về kiến thức nền)