Sử dụng STL vector - Hưng
Khởi Tạo Và In Vector
Nộp bàiPoint: 1
Cho số nguyên dương N. Hãy khai báo một vector số nguyên lưu trữ N phần tử được nhập từ bàn phím. Sau đó, in các phần tử của vector ra màn hình trên một dòng, cách nhau bởi dấu cách.
Input:
Dòng 1: Số nguyên N.
Dòng 2: N số nguyên A[i].
Ràng buộc:
1 <= N <= 10^5
-10^9 <= A[i] <= 10^9
Output:
- In ra các phần tử của vector.
Ví dụ 1:
Input:
5
1 2 3 4 5
Output:
1 2 3 4 5
Ví dụ 2:
Input:
3
10 -20 30
Output:
10 -20 30
Đảo Ngược Vector
Nộp bàiPoint: 1
Cho vector A gồm N số nguyên. Hãy in ra các phần tử của vector theo thứ tự ngược lại (từ cuối về đầu).
Input:
Dòng 1: Số nguyên N.
Dòng 2: N số nguyên A[i].
Ràng buộc:
1 <= N <= 10^5
-10^9 <= A[i] <= 10^9
Output:
- Dãy số sau khi đảo ngược.
Ví dụ 1:
Input:
4
1 2 3 4
Output:
4 3 2 1
Ví dụ 2:
Input:
3
5 5 1
Output:
1 5 5
Truy Cập Phần Tử
Nộp bàiPoint: 1
Cho vector A gồm N phần tử. Hãy in ra giá trị của phần tử ở vị trí thứ K (tính từ 0). Nếu K nằm ngoài phạm vi của vector (nhỏ hơn 0 hoặc lớn hơn N-1), hãy in ra -1.
Input:
Dòng 1: Hai số nguyên N và K.
Dòng 2: N số nguyên A[i].
Ràng buộc:
1 <= N <= 10^5
-10^5 <= K <= 10^5
|A[i]| <= 10^9
Output:
- Giá trị phần tử tại vị trí K hoặc -1.
Ví dụ 1:
Input:
5 2
10 20 30 40 50
Output:
30
Ví dụ 2:
Input:
3 5
1 2 3
Output:
-1
Kích Thước Vector
Nộp bàiPoint: 1
Ban đầu có một vector rỗng.
Bạn sẽ nhận được Q thao tác. Mỗi thao tác có dạng:
1 X: Thêm số nguyên X vào cuối vector (push_back).
2: Xóa phần tử cuối cùng khỏi vector (pop_back). Nếu vector rỗng thì không làm gì.
Cuối cùng, hãy in ra kích thước hiện tại của vector và các phần tử trong đó.
Input:
Dòng 1: Số nguyên Q (số lượng thao tác).
Q dòng tiếp theo: Mô tả thao tác như đề bài.
Ràng buộc:
1 <= Q <= 1000
|X| <= 10^9
Output:
Dòng 1: Kích thước vector.
Dòng 2: Các phần tử trong vector (nếu có).
Ví dụ 1:
Input:
5
1 10
1 20
2
1 30
1 40
Output:
3
10 30 40
Ví dụ 2:
Input:
3
2
1 5
2
Output:
0
(Dòng này để trống)
Tổng Vector
Nộp bàiPoint: 1
Cho vector A gồm N số nguyên. Hãy tính tổng tất cả các phần tử có trong vector.
Input:
Dòng 1: N.
Dòng 2: N số nguyên A[i].
Ràng buộc:
1 <= N <= 10^5
|A[i]| <= 10^9 (Lưu ý kết quả có thể vượt quá int).
Output:
- Tổng các phần tử.
Ví dụ 1:
Input:
4
1 2 3 4
Output:
10
Ví dụ 2:
Input:
3
1000000000 1000000000 1000000000
Output:
3000000000
Thay Đổi Kích Thước (Resize)
Nộp bàiPoint: 1
Cho vector A gồm N phần tử ban đầu toàn số 0. Sau đó, người ta thay đổi M giá trị đầu tiên thành các số 1. Nếu M > N, vector sẽ tự động mở rộng thêm để chứa đủ M số 1. Hãy in ra kích thước vector sau cùng và các phần tử của nó.
Input:
- Hai số nguyên N và M.
Ràng buộc:
- 1 <= N, M <= 1000
Output:
Dòng 1: Kích thước vector.
Dòng 2: Các phần tử.
Ví dụ 1:
Input:
5 3
Output:
5
1 1 1 0 0
Ví dụ 2:
Input:
3 5
Output:
5
1 1 1 1 1
Chèn Phần Tử (Insert)
Nộp bàiPoint: 1
Cho vector A gồm N phần tử.
Hãy chèn giá trị X vào vị trí K (tính từ 0) trong vector.
Các phần tử từ vị trí K trở về sau sẽ bị đẩy lùi lại.
Input:
Dòng 1: N.
Dòng 2: N số nguyên A[i].
Dòng 3: Hai số nguyên K và X. (0 <= K <= N).
Ràng buộc:
1 <= N <= 1000
|A[i]|, |X| <= 10^9
Output:
- Vector sau khi chèn.
Ví dụ 1:
Input:
4
1 2 3 4
1 100
Output:
1 100 2 3 4
Ví dụ 2:
Input:
3
5 5 5
3 10
Output:
5 5 5 10
Xóa Tại Vị Trí (Erase)
Nộp bàiPoint: 1
Cho vector A gồm N phần tử. Hãy xóa phần tử tại vị trí K (tính từ 0).
Sau khi xóa, các phần tử phía sau sẽ dồn lên trước.
Input:
Dòng 1: N.
Dòng 2: N số nguyên A[i].
Dòng 3: Số nguyên K (0 <= K < N).
Ràng buộc:
1 <= N <= 1000
|A[i]| <= 10^9
Output:
- Vector sau khi xóa.
Ví dụ 1:
Input:
5
10 20 30 40 50
2
Output:
10 20 40 50
Ví dụ 2:
Input:
3
1 2 3
0
Output:
2 3
Xóa Một Đoạn
Nộp bàiPoint: 1
Cho vector A gồm N phần tử.
Hãy xóa tất cả các phần tử từ chỉ số L đến chỉ số R (bao gồm cả L và R).
Input:
Dòng 1: N.
Dòng 2: N số nguyên A[i].
Dòng 3: Hai số nguyên L, R (0 <= L <= R < N).
Ràng buộc:
1 <= N <= 1000
|A[i]| <= 10^9
Output:
- Vector sau khi xóa.
Ví dụ 1:
Input:
6
1 2 3 4 5 6
2 4
Output:
1 2 6
Ví dụ 2:
Input:
4
10 20 30 40
0 3
Output:
(Dòng này để trống)
Xóa số (vector)
Nộp bàiPoint: 1
Cho dãy số N phần tử được đánh vị trí từ 0 đến N - 1 và một số k. Ta thực hiện các bước xoá phần tử của dãy số như sau: Xét các phần tử ở các vị trí 0, k, 2 × k, 3 × k,..., tìm phần tử đầu tiên có giá trị lớn nhất và xoá phần tử đó đi, sau đó các phần tử còn lại sẽ được dồn lại. Thực hiện các bước xoá như trên đến khi dãy số không còn phần tử nào.
Yêu cầu: Hãy đưa ra giá trị của các phần tử bị xóa tại mỗi bước.
Dữ liệu vào:
• Dòng đầu tiên chứa hai số nguyên N,k (2 ≤ k ≤ N ≤ 10^5);
• Dòng thứ hai chứa N số nguyên ai (0 ≤ i ≤ N - 1; 1 ≤ ai ≤ N).
Kết quả: In ra gồm N dòng, mỗi dòng là giá trị của phần tử bị xóá tại mỗi bước.
Input:
10 3
2 3 1 9 10 4 5 6 1 5
Output:
9
10
4
5
6
2
5
3
1
1