Mảng 1 chiều nâng cao - Ôn chuyên

Gửi thư

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

Point: 1

Tất cá các thành phố của Lineland đều năm trên trục tọa độ Ox. Do đó, mỗi thành phố được liên kết với vị trí xi - tọa độ trên trục Ox. Không có hai thành phố được đặt tại một điểm. Cư dân Lineland thích gửi thư cho nhau. Một người chỉ có thể gửi thư nếu người nhận sống ở một thành phố khác. Chi phí gửi thư chính xác bằng khoảng cách giữa thành phố của người gửi và thành phố của người nhận. Đối với mỗi thành phố, hãy tính hai giá trị mini và maxi, trong đó mini là chi phí tối thiểu để gửi thư từ thành phố thứ i đến một thành phố khác và maxi là chi phí tối đa để gửi thư từ thành phố thứ i đến một số thành phố khác.


Định dạng đầu vào: Dòng đầu tiên là số nguyên dương n. Dòng thứ hai chứa chuỗi n số nguyên khác nhau x1, x2,.... xn (-10^9 <= xi <=10^9), trong đó xi là tọa độ x của thành phố thứ i. Tất cả các xi là khác biệt và theo thứ tự tăng dần.


Ràng buộc: 2 ≤ n ≤ 10^6; -10^9 ≤ xi ≤ 10^9


Input:
4
-5 -2 2 7
Output:
3 12
3 9
4 7
5 12

Đếm cặp số nguyên tố cùng nhau (mảng 1 chiều nâng cao)

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

Point: 1

Cho một dãy số nguyên dương có n phần tử. Hãy đếm các cặp số nguyên tố cùng nhau trong mảng


Định dạng đầu vào: Dòng đầu tiên là số lượng phần tử trong mảng n. Dòng thứ 2 là các phần tử ai trong mảng


Ràng buộc: 1≤n≤1000; 1≤ai≤10^9


Định dạng đầu ra: In ra số lượng cặp số nguyên tố cùng nhau trong mảng.


Input:
5
2 4 8 3 6
Output:
3

Dãy số ưu thế (mảng 1 chiều nâng cao)

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

Point: 1

Cho dãy A[] chỉ bao gồm các số nguyên dương nhưng không biết trước số phần tử của dãy. Người ta gọi dãy A[] là dãy ưu thế nếu thỏa mãn 1 trong 2 điều kiện sau đây: Dãy gọi là ưu thế chẵn nếu số phần tử của dãy là chẵn và số lượng số chẵn trong dãy nhiều hơn số lượng số lẻ. Dãy gọi là ưu thế lẻ nếu số phần tử của dãy là lẻ và số lượng số lẻ trong dãy nhiều hơn số lượng số chẵn.


Định dạng đầu vào: 1 dòng gồm các số nguyên, mỗi số cách nhau đúng một khoảng trắng, sau chữ số cuối cùng có thể có khoảng trắng.


Ràng buộc: Số lượng phần tử trong dãy không quá 10^5; 1 ≤ A[i] ≤ 10^9


Định dạng đầu ra: In ra YES nếu dãy là dãy ưu thể, ngược lại in NO.


Input:
2 2 3 5 8 10 20 88
Output:
YES

Số thao tác giúp mảng tăng dần 2

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

Point: 1

Cho dãy số A[] gồm có t phần tử. Ớ mỗi thao tác bạn có thể tăng các phần tử trong mảng lên 1 lượng là d đơn vị, hãy xác định số thao tác tối thiểu sao cho mảng trở thành một dãy tăng chặt. Ví dụ dãy 1 2 3 7 8 là một dãy tăng chặt, nhưng dãy 1 2 2 7 8 không phải là một dãy tăng chặt. Ví dụ với mảng ban đầu là 1 3 3 2 và d = 2, ta cần thực hiện thao tác thứ nhất thêm d vào phần tử thứ 3 trong mảng, mảng trở thành 1 3 5 2, ta tiếp thục thực hiện 2 thao tác thêm d vào phần tử thứ 4, mảng trở thành dãy tăng chặt là 1 3 5 6.


Định dạng đầu vào: Dòng đầu tiên là số nguyên N và số d. Dòng tiếp theo gồm N số nguyên A[i]


Ràng buộc: 1≤ N, d ≤ 10^4; 0 ≤ A[i] ≤ 10^6


Định dạng đầu ra: In ra số thao tác tối thiểu cần thực hiện để biến mảng thành dãy tăng chặt.


Input:
3 3
15 17 9
Output:
3

Chia mảng (sắp xếp)

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

Point: 1

Cho mảng A[] gồm N số nguyên không âm và số K. Nhiệm vụ của bạn là hãy chia mảng A[] thành hai mảng con có kích cỡ K và N-K sao cho hiệu giữa tổng hai mảng con là lớn nhất. Ví dụ với mảng A[] = {8, 4, 5, 2, 10}, K = 2 ta có kết quả là 17 vì mảng A[] được chia thành hai mảng (4, 2) và (8, 5,10) có hiệu của hai mảng con là 23-6=17 là lớn nhất.


Định dạng đầu vào: Dòng đầu tiên là 2 số N và K. Dòng thứ 2 là N số trong mảng A


Ràng buộc: 1 ≤ K < N ≤ 10^5; 0 ≤ A[i] ≤ 10^7


Định dạng đầu ra: In ra hiệu lớn nhất có thể.


Input:
8 3
1 1 1 1 1 1 1 1
Output:
2

Thành phố trên hệ trục tọa độ

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

Point: 1

Tất cả các thành phố của Lineland đều nằm trên trục tọa độ Ox. Do đó, mỗi thành phố được liên kết với vị trí xi - tọa độ trên trục Ox. Không có hai thành phố được đặt tại một điểm. Cư dân Lineland thích gửi thư cho nhau. Một người chỉ có thể gửi thư nếu người nhận sống ở một thành phố khác. Chi phí gửi thư chính xác bằng khoảng cách giữa thành phố của người gửi và thành phố của người nhận. Đối với mỗi thành phố, hãy tính hai giá trị mini và maxi, trong đó mini là chi phí tối thiểu để gửi thư từ thành phố thứ i đến một thành phố khác và maxi là chi phí tối đa để gửi thư từ thành phố thứ i đến một số thành phố khác.


Input: Dòng đầu tiên của đầu vào chứa số nguyên n (2<= n ≤ 10^5) - số lượng thành phố trong Lineland. Dòng thứ hai chứa chuỗi n số nguyên khác nhau x1, x2, ..., xn (-10^9<= xi <=10^9), trong đó xi là tọa độ x của thành phố thứ i. Tất cả các xi là khác biệt và theo thứ tự tăng dần.

Output: In n dòng, dòng thứ i phải chứa hai số nguyên mini, maxi, cách nhau bởi một khoảng trắng, trong đó mini là chi phí tối thiểu để gửi thư từ thành phố thứ i và maxi là chi phí tối đa để gửi thư từ thành phố thứ i.


Ví dụ:

Input:
4 
-5 -2 2 7
Ouput:
3 12
3 9
4 7
5 12

Liệt kê các phần tử có ít nhất 2 phần tử lớn hơn nó

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

Point: 1

Cho một mảng gồm n (3<=n<=10^7) số nguyên đôi một khác nhau, liệt kê các phần tử trong mảng có ít nhất 2 phần tử khác lớn hơn nó.


Ví dụ:

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

In ra 3 số nhỏ nhất trong mảng

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

Point: 1

Cho một mảng gồm n (3<=n<=10^7) số nguyên đôi một khác nhau, tìm và in ra 3 số nhỏ nhất trong mảng.


Ví dụ:

Input:
7
9 11 78 75 14 6 1
Ouput:
9 6 1

Loại bỏ trùng

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

Point: 1

Viết chương trình cho phép nhập vào mảng A gồm n phần tử số nguyên (n>2). Thực hiện loại bỏ các phần tử đã xuất hiện và In ra mảng kết quả.

Định dạng đầu vào:

  • Dòng đầu tiên là số phần tử của mảng

  • Dòng thứ hai là các phần tử của mảng

Định dạng đẩu ra: Mảng kết quả


INPUT:
7
1 5 10 10 5 2 3
OUTPUT:
1 5 10 2 3

Nhỏ nhất và nhỏ nhì

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

Point: 1

Viết chương trình cho phép nhập vào mảng A gồm n phần tử số nguyên (n>2). Tìm giá trị nhỏ nhất và nhỏ thứ hai và in ra.

Định dạng đầu vào:

  • Dòng đầu tiên là số phần tử của mảng
  • Dòng thứ hai là các phần tử của mảng

Định dạng đầu ra: Giá trị nhỏ nhất và giá trị nhỏ thứ hai

INPUT:
6
80 23 79 58 11 10
OUTPUT:
10 11

Maximum pair (mảng 1 chiều nâng cao)

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

Point: 1

Cho mảng A gồm N phần tử, hãy tìm 2 chỉ số i, j khác nhau sao cho 0 <= i < j < N và trị tuyệt đối của tổng của 2 phần tử A[i] và A[j] đạt giá trị lớn nhất.


Định dạng đầu vào: Dòng đầu tiên là số nguyên N. Dòng tiếp theo gồm N số nguyên A[i]


Ràng buộc:

2<=N<=10^6;

-10^9<=A[i]<=10^9


Định dạng đầu ra: In ra đáp án của bài toán là chỉ số i và j thoả mãn. Lưu ý in chỉ số nhỏ trước lớn sau.


Input 01:
5
-1 -2 -3 10 -5
Output 01:
0 3
Input 02:
5
-1 -2 -3 8 -5
Output 02:
2 4

Số lớn hơn các số đứng trước (mảng 1 chiều nâng cao)

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

Point: 1

Cho một dãy số nguyên dương có n phần tử. Hãy liệt kê số các phần tử trong dãy lớn hơn tất cả các số đứng trước nó (Phần tử đầu tiên được coi là một phần tử thỏa mãn).


Định dạng đầu vào: Dòng đầu tiên là số lượng phần tử trong mảng. Dòng thứ 2 là N phần tử trong mảng.


Ràng buộc: 2≤n≤10^6; 1≤ai≤10^9


Định dạng đầu ra: Liệt kê các số thỏa mãn


Input:
6
6 2 1 3 9 9
Output:
6 9

Số lớn thứ nhì

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

Point: 1

Nhập vào một mảng A có N phần tử, in ra giá trị lớn thứ nhì của mảng và chỉ số của các số hạng đạt giá trị lớn nhì trong mảng.


Dòng thứ nhất Nhập N, từ dòng thứ 2 sẽ lần lượt nhập N phần tử của mảng A

In ra phần tử lớn thứ nhì và vị trí của các phần tử lớn thứ nhì trong mảng A


Ràng buộc: ~0 < N \leq 10^6, -10^6 \leq A[i] \leq 10^6~


Input:
9
4 3 4 2 2 4 2 3 4
Output:
3 2 8

Số 3 là số lớn thứ nhì và vị trí xuất hiện của nó là vị trí 2 và 8


Số thao tác giúp mảng tăng dần

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

Point: 1

Cho dãy số A[] gồm có N phần tử. Ở mỗi thao tác bạn có thể tăng các phần tử trong mảng lên 1 vài đơn vị, hãy xác định số đơn vị tối thiểu cần thêm vào các phần tử trong mảng sao cho mảng trở thành một dãy tăng chặt. Ví dụ dãy 1 2 3 7 8 là một dãy tăng chặt, nhưng dãy 1 2 2 7 8 không phải là một dãy tăng chặt.


Định dạng đầu vào: Dòng đầu tiên là số nguyên N. Dòng tiếp theo gồm N số nguyên A[i]


Ràng buộc: 1≤ N ≤ 10^6; 0 ≤ A[i] ≤ 10^6


Định dạng đầu ra: In ra số đơn vị tối thiểu cần thêm vào các phần tử trong mảng để dãy tăng chặt.


Input:
5
3 2 7 8 1
Output:
10

Cân bằng chẵn lẻ

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

Point: 1

Cho một mảng gồm n số nguyên. Bạn được phép đổi vị trí các phần tử trong mảng (hoán đổi tự do). Hãy kiểm tra xem có thể sắp xếp lại mảng sao cho các vị trí chẵn (tính từ 0) chứa số chẵn và các vị trí lẻ chứa số lẻ hay không.

Input:

  • Dòng đầu tiên chứa số nguyên ~n~ ~(1 ≤ n ≤ 1000)~
  • Dòng thứ hai chứa n số nguyên ~a₁, a₂, ..., aₙ~ ~(|aᵢ| ≤ 10⁶)~

Output:

  • In ra "YES" nếu có thể sắp xếp lại như yêu cầu.
  • In ra "NO" nếu không thể.

Ví dụ :

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

→ Vì ta có thể sắp: ~2~ ~1~ ~4~ ~3~ ~6~ ~5~ → chỉ số chẵn là ~2~ ~4~ ~6~ (đều chẵn), chỉ số lẻ là ~1~ ~3~ ~5~ (đều lẻ)



Cặp số đối kháng

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

Point: 1

Cho một mảng ~n~ số nguyên ~a₁, a₂, ..., aₙ~.

Một cặp số ~(aᵢ, aⱼ)~ được gọi là cặp đối kháng nếu ~aᵢ + aⱼ = 0~ và ~i < j~.


Hãy kiểm tra xem mảng có chứa ít nhất một cặp đối kháng không?


Input:

~-~ Dòng đầu tiên là số nguyên n ~(1 ≤ n ≤ 1000)~

~-~ Dòng thứ hai là n số nguyên ~a₁, a₂, ..., aₙ~

Output:

In "YES" nếu tồn tại ít nhất một cặp đối kháng ~(aᵢ, aⱼ)~ với ~i < j~

In "NO" nếu không tồn tại cặp nào


Ví dụ:

Input:
5
0 2 5 4 9
Output:
NO