Submit solution
Points:
0.56 (partial)
Time limit:
1.0s
Memory limit:
256M
Input:
stdin
Output:
stdout
Problem source:
Problem type
Allowed languages
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch
Blackjack là trò chơi đánh bài khá phổ biến, mục tiêu là có được những lá bài mà tổng của nó là lớn nhất nhưng không vượt quá ~21~. Lấy ý tưởng từ trò chơi này các bạn khaihanhdk, huytion156, thanhdat01234 đã sáng tạo ra một phiên bản mới của trò chơi cho riêng mình.
Trong phiên bản trò chơi mới này các bạn đã viết lên mỗi lá bài một số nguyên dương. Người tham gia trò chơi được cung cấp một tập gồm ~N~ lá bài và một số nguyên dương ~M~. Nhiệm vụ của người chơi là phải chọn ra ~3~ lá bài từ tập lá bài đã cho sao cho tổng các số trên ~3~ lá bài đã chọn là lớn nhất và không vượt quá ~M~.
Input
- Dòng đầu ghi số nguyên dương ~N~, ~M~ ~(N \le 10000~, ~M \le 500000)~.
- ~N~ dòng sau ghi ~N~ số nguyên dương đôi một khác nhau là các số được ghi trên ~N~ lá bài ~(1 \leq a_{i} \leq 10000)~.
Output
Ghi trên một dòng duy nhất là kết quả bài toán. Test luôn đảm bảo có kết quả.
Sample Input
6 20 7 9 6 2 1 5
Sample Output
20
Note
Chọn các lá bài mang số ~9~, ~6~, ~5~ ta có ~9 + 6 + 5 = 20 \le M~
Comments
Bài này các bạn sắp xếp mảng A, rồi với mỗi A[k], dùng two pointers để tìm cặp A[i], A[j] có tổng = m - A[k]
Đồng thời phải liên tục kiểm tra cho i, j, k khác nhau đôi một ĐPT O(n^2)
Nếu ~n <= 10^4~ thì ~O(n^2 log(n))~ có chạy được không nhỉ
6 20 10 7 6 8 5 1 test chưa kĩ nha ad ơi xem mấy code top1 dùng test này toàn sai ra 19 nhưng đúng ra là 20
This comment is hidden due to too much negative feedback. Show it anyway.
This comment is hidden due to too much negative feedback. Show it anyway.
This comment is hidden due to too much negative feedback. Show it anyway.
bro ~n \leq 10^4~
This comment is hidden due to too much negative feedback. Show it anyway.