Giao và hợp của hai tập

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ớ: 256M
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Pascal, Python

Cho hai dãy số nguyên ~A~ và ~B~ (các giá trị có thể lặp lại trong mỗi dãy). Xem mỗi dãy là một tập hợp (mỗi giá trị chỉ tính một lần). Hãy đếm số phần tử của giao (các giá trị có trong cả hai tập) và của hợp (các giá trị có ít nhất trong một tập).

Dữ liệu vào

Dòng đầu tiên chứa hai số nguyên ~n, m~ (~1 \le n, m \le 1000~) là số phần tử của dãy ~A~ và dãy ~B~.

Dòng thứ hai chứa ~n~ số nguyên của ~A~, dòng thứ ba chứa ~m~ số nguyên của ~B~ (các giá trị từ ~1~ đến ~10^9~).

Kết quả

In ra hai số: số phần tử của giao và số phần tử của hợp, cách nhau bởi dấu cách.

Ví dụ

Ví dụ 1

Input:

4 5
1 2 3 4
3 4 5 6 7

Output:

2 7

Ví dụ 2

Input:

3 3
1 2 3
4 5 6

Output:

0 6

Giải thích

Với A = {1, 2, 3, 4} và B = {3, 4, 5, 6, 7}: giao là {3, 4} (~2~ phần tử), hợp là {1, 2, 3, 4, 5, 6, 7} (~7~ phần tử). set tự loại bỏ giá trị trùng và cho phép kiểm tra "có trong tập không" rất nhanh bằng count.


Đang tải...