BÀI 2. Sàn lọc dữ liệu tại UMT

Xem dạng PDF

Gửi bài giải

Điểm: 100,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 512M
Input:stdin
Output:stdout

Authors:
Dạng bài

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Trong một buổi sinh hoạt học thuật tại UMT, các thành viên được giao nhiệm vụ làm sạch một tập dữ liệu đầu vào bị trùng lặp. Mỗi bạn được cấp một dãy số gồm n phần tử nguyên, đại diện cho các mã sinh viên do hệ thống ghi nhận (nhưng đôi khi bị lỗi lặp mã).

Để chuẩn bị cho một buổi phân tích tiếp theo, cố vấn học thuật yêu cầu mỗi bạn phải làm sạch dãy mã sinh viên này sao cho mọi mã còn lại đều khác nhau (không có mã nào trùng lặp). Tuy nhiên, do hạn chế giao diện phần mềm, mỗi thao tác chỉ có thể là:

• Xóa mã đầu tiên trong danh sách.

• Xóa mã cuối cùng trong danh sách.

Nhiệm vụ của bạn là xác định số thao tác ít nhất cần thực hiện để danh sách chỉ còn các mã phân biệt.


Input

Dòng đầu tiên là một số nguyên n ~(1 ≤ n ≤ 10^5)~ — số lượng mã sinh viên được ghi nhận.

Dòng thứ hai gồm ~n~ số nguyên ~a_1, a_2, . . . , a_n (1 ≤ a_i ≤ 10^5)~ — danh sách mã sinh viên.


Output

In ra một số nguyên duy nhất — số thao tác tối thiểu cần thực hiện để danh sách trở nên phân biệt.


Sample Input 1

4
4 3 3 2

Sample Ouput 1

2

Sample Input 2

5
1 2 3 4 5

Sample Ouput 2

0

Giải thích

Trong test mẫu trên, bạn có thể xóa hai phần tử đầu tiên để được dãy [3, 2], hoặc hai phần tử cuối cùng để được [4, 3]. Cả hai đều là dãy gồm các phần tử phân biệt, và cần đúng 2 thao tác.


Subtask:

• Subtask 1 (50% số điểm): ~n ≤ 5000~

• Subtask 2 (50% số điểm): Không giới hạn gì thêm.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.