canuc80k1009·10/40

Giá Trị Lớn Nhất Từ Ba Số

Nộp bài trên LQDOJ

Bài 10 · Meet in the Middle

Cho một tập gồm số nguyên dương đôi một khác nhau. Tìm phần tử lớn nhất của sao cho tồn tại cũng thuộc và . Ba vai trò được phép dùng cùng một giá trị nhiều lần.

Input

  • Dòng đầu chứa số nguyên .
  • dòng tiếp theo lần lượt chứa các phần tử của .

Output

  • In giá trị lớn nhất thỏa mãn. Dữ liệu bảo đảm luôn có ít nhất một đáp án.

Constraints

  • .
  • .
  • Các phần tử của đôi một khác nhau.
  • Luôn tồn tại ít nhất một thỏa mãn.

Scoring

  • Subtask ( số điểm): .
  • Subtask ( số điểm): Không có giới hạn bổ sung.

Example

Test 1

Input

5
1
2
4
7
13

Output

13

Giải thích: Giá trị thuộc tập và có thể viết thành ; đây cũng là phần tử lớn nhất của tập nên chắc chắn là đáp án.

Lời giải tóm tắt
  • Phân tích: Biến đổi a+b+c=d thành a+b=d-c. Tiền xử lý mọi tổng cặp a+b, gồm cả trường hợp chọn cùng giá trị hai lần. Sau đó thử d từ lớn xuống và mọi c.
  • Thuật toán: Sắp xếp U. Sinh và sắp xếp mọi tổng U_i+U_j với i≤j. Duyệt ứng viên d giảm dần; nếu có c sao cho d-c xuất hiện trong danh sách tổng, in d ngay.
  • Chứng minh: Đẳng thức gốc tương đương hoàn toàn với a+b=d-c. Vì danh sách chứa mọi tổng cặp kể cả a=b, thuật toán phát hiện mọi biểu diễn hợp lệ. Các ứng viên d được thử giảm dần, nên ứng viên đầu tiên được phát hiện chính là giá trị lớn nhất.
  • Độ phức tạp: Có O(n^2) tổng cặp. Thời gian O(n^2 log n), bộ nhớ O(n^2).