Sử dụng vector - Lớp ôn chuyên 2

Khởi Tạo Và In Vector

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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

Tổng Vector

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 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

Xóa Tại Vị Trí (Erase)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 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ài
Time limit: 1.0 / Memory limit: 256M

Point: 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)

Tìm Giá Trị Lớn Nhất (vector)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho vector A. Tìm giá trị lớn nhất và vị trí xuất hiện đầu tiên của nó 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

Output:

  • Giá trị lớn nhất và chỉ số của nó.

Ví dụ 1:

Input:
5
1 5 3 5 2
Output:
5 1

Ví dụ 2:

Input:
3
-1 -5 -2
Output:
-1 0

Đếm Số Lần Xuất Hiện (vector)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho vector A và số nguyên X. Hãy đếm xem X xuất hiện bao nhiêu lần trong vector.

Input:

  • Dòng 1: N và X.

  • Dòng 2: N số nguyên A[i].

Ràng buộc:

  • 1 <= N <= 10^5

  • |A[i]|, |X| <= 10^9

Output:

  • Số lần xuất hiện của X.

Ví dụ 1:

Input:
6 2
1 2 3 2 4 2
Output:
3

Ví dụ 2:

Input:
5 10
1 2 3 4 5
Output:
0

Lọc Số Chẵn

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho vector A gồm N số nguyên.

Hãy tạo một vector B mới, chỉ chứa các số Chẵn từ vector A theo thứ tự xuất hiện.

In ra vector B.


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

Output:

  • Các phần tử của vector B.

Ví dụ 1:

Input:
5
1 2 3 4 6
Output:
2 4 6

Ví dụ 2:

Input:
3
1 3 5
Output:
(Dòng này để trống)

Kiểm Tra Tăng Dần

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho vector A. Kiểm tra xem vector này có phải là dãy tăng dần (A[i] <= A[i+1]) hay không.

In "YES" nếu đúng, "NO" nếu sai.


Input:

  • Dòng 1: N.

  • Dòng 2: N số nguyên A[i].

Ràng buộc:

  • 2 <= N <= 10^5

  • |A[i]| <= 10^9

Output:

  • YES hoặc NO.

Ví dụ 1:

Input:
4
1 2 5 9
Output:
YES

Ví dụ 2:

Input:
4
1 3 2 4
Output:
NO

Thay Thế Giá Trị

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho vector A. Hãy thay thế tất cả các số có giá trị X thành giá trị Y.


Input:

  • Dòng 1: N.

  • Dòng 2: N số nguyên A[i].

  • Dòng 3: Hai số nguyên X và Y.

Ràng buộc:

  • 1 <= N <= 10^5

  • |A[i]|, |X|, |Y| <= 10^9

Output:

  • Vector sau khi thay thế.

Ví dụ 1:

Input:
5
1 2 1 3 1
1 0
Output:
0 2 0 3 0

Ví dụ 2:

Input:
3
5 5 5
2 4
Output:
5 5 5

Sắp Xếp Vector

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho vector A. Hãy sắp xếp vector này theo thứ tự tăng dần và in ra. (Gợi ý: Sử dụng sort trong thư viện algorithm).


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

Output:

  • Vector sau khi sắp xếp.

Ví dụ 1:

Input:
5
5 1 4 2 8
Output:
1 2 4 5 8

Ví dụ 2:

Input:
3
3 2 1
Output:
1 2 3

Gộp Hai Vector

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho hai vector A (kích thước N) và B (kích thước M). Hãy tạo vector C là kết quả của việc nối vector B vào sau vector A.


Input:

  • Dòng 1: N và M.
  • Dòng 2: N số nguyên của A.
  • Dòng 3: M số nguyên của B.

Ràng buộc:

  • 1 <= N, M <= 1000
  • |Giá trị| <= 10^9

Output:

  • Vector C.

Ví dụ 1:

Input:
3 2
1 2 3
4 5
Output:
1 2 3 4 5

Ví dụ 2:

Input:
2 2
10 20
30 40
Output:
10 20 30 40

Chèn Phần Tử (Insert)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 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

Kích Thước Vector

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 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)


Bỏ phiếu

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Chuẩn bị Gala mừng năm mới Tết Tân Sửu 2021 của công ty HiTech, ban giám đốc quyết định có giải thưởng đặc biệt cho thành viên của công ty. Sau khi đưa ra các tiêu chí đánh giá, việc bầu chọn sẽ được thực hiện bằng cách tất cả các thành viên sẽ được bỏ phiếu cho nhau. Hình thức bỏ phiếu được thực hiện thông qua phiếu bầu chọn online. Danh sách các thành viên của công ty được niêm yết và quy định là số thứ tự từ 1 đến N (1 ≤ N ≤ 5000), tương ứng với N ô trên phiếu bầu chọn. Sau khi thực hiện, ban tổ chức thu được các danh sách phiếu tương ứng của các thành viên công ty. Trong mỗi phiếu bầu chọn, giá trị ô ở vị trí tương ứng ghi 'X' là bầu chọn cho người đó, ô ghi 'Ơ' là không bầu chọn (coi các trường hợp bầu chọn không hợp lệ là không bầu chọn).

Yêu cầu: Em hãy giúp ban tổ chức đưa ra danh sách các nhân viên có phiếu bầu chọn cao nhất.

Dữ liệu nhập vào:

• Dòng đầu tiên gồm số một số nguyên dương N (1 ≤ N ≤ 5000) là số lượng phiếu bầu chọn.

• N dòng tiếp theo mỗi dòng tương ứng là N giá trị của các phiếu đã bầu chọn.

Các kí tự cách nhau một dấu cách.

Kết quả ghi ra:

• Dòng đầu tiên ghi số lượng người được nhiều phiếu nhất và số lượng phiếu.

• Dòng thứ hai ghi thứ tự tương ứng của những người được cao phiếu nhất đó theo thứ tự tăng dần.


Ví dụ

Input:
5
X 0 X 0 X
X 0 0 X X
0 0 X 0 0
0 X 0 X 0
0 0 X X 0
Output:
2 3
3 4

Giải thích:

• Người số 1 được 2 phiếu bầu chọn.

• Người sô 2 được 1 phiêu bâu chọn.

• Người số 3 được 3 phiếu bầu chọn.

• Người số 4 được 3 phiếu bầu chọn

• Người số 5 được 2 phiếu bầu chọn.

• Người số 3 và số 4 cùng được số phiếu bầu chọn lớn nhất.


Giới hạn:

• Có 70% số test tương ứng với số điểm có N ≤ 1000;

• 30% số test còn lại tương ứng với số điểm có N ≤ 5000.


Xóa phần tử khỏi mảng

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho một dãy A gồm n số nguyên a1, a2, a3, ... an và một số nguyên dương v. Hãy tìm cách xóa bỏ số a[v] khỏi dãy A, đảm bảo các số còn lại vẫn giữ nguyên thứ tự.


Input:

Dòng thứ nhất gồm hai số nguyên dương n và v (1 ≤ v ≤ n ≤ 10^5).

Dòng tiếp theo gồm n số nguyên a1, a2, a3,..., an (ai ≤ 10^5).

Output: In ra dãy n - 1 số (các số cách nhau một khoảng trắng) sau khi xoá phần tử a[v].


Sample Test

Input:
5 2
8 2 2 10 2
Output:
8 2 10 2

Thêm phần tử vào mảng

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho một dãy A gồm n số nguyên a1, a2, a3, ... an và hai số nguyên v, T. Hãy tìm cách thêm số T vào vị trí v trong dãy A (các số ban đầu vẫn giữ nguyên thứ tự).


Input:

Dòng thứ nhất gồm ba số nguyên n, v, T (1 ≤ n, 1 ≤ v ≤ n+ 1 ≤ 10^5 + 1, |T| ≤ 10^5).

Dòng tiếp theo gồm n số nguyên a1, a2, a3, ..., an (|ai| ≤ 10^5).

Output: In ra dãy n + 1 số (các số cách nhau một khoảng trắng) sau khi thêm số T vào vị trí v.


Input:
5 2 9
8 6 2 10 5
Output:
8 9 6 2 10 5

Đoạn con đan dấu dài nhất

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho một dãy A gồm n số nguyên a1, a2, a3, ..., an. Hãy tìm đoạn con đan dấu dài nhất của dãy A.

Note:

• Một đoạn con đan dấu của dãy A là một đoạn liên tiếp a1, a1+1, a1+2, ..., ar (1 ≤ r) sao cho với mọi i : 1 ≤ i < r, ai khác dấu ai+1.

• Số 0 không khác dấu với các số khác.


Input:

• Dòng đầu tiên chứa số nguyên n (1 ≤ n ≤ 10^5).

• Dòng tiếp theo chứa n số nguyên a1, a2, a3,..., an (|ai| ≤ 10^5).

Output:

• Dòng thứ nhất in ra độ dài đoạn con đan dấu dài nhất của dãy A.

• Dòng tiếp theo in ra các số trong đoạn con đan dấu dài nhất, mỗi số cách nhau một khoảng trắng. Nếu có nhiều đoạn thỏả mãn hãy in ra đoạn xuất hiện đầu tiên trong dãy.


Input:
5
-3 6 -2 9 5
Output:
4
-3 6 -2 9
Input:
6
1 -3 6 2 -9 5
Output:
3
1 -3 6

Note: Có hai đoạn đan dấu là [1, -3, 6] và [2, -9, 5], ta chỉ lấy đoạn xuất hiện đầu tiên.


Tổng đoạn thẳng

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho n đoạn thẳng trên trục số, mỗi đoạn thẳng được biểu diễn bởi 2 số (xi, di) lần lượt là toạ độ đầu mút bên trái và độ dài đoạn thẳng. Tính tổng độ dài được phủ bởi ít nhất 1 đoạn thắng trên trục số.

Đầu vào:

• Dòng đầu tiên chứa số nguyên dương n - số lượng đoạn (1 ≤ n ≤ 10^3).

• n dòng tiếp theo, một dòng chứa số nguyên x; và số nguyên dương di mô tả đoạn thẳng (|xi|, di ≤ 10^3).

Đầu ra:

In ra tổng độ dài bị phủ.


Input:
3
-1 2
0 2
3 1
Output:
4