Đề bài: Cho n phần tử và số nguyên dương k, hãy tìm xem trong dãy đó có bao nhiêu phương án lựa chọn các phần tử sao cho tổng các phần tử đó đúng bằng k. Biết rằng các cách lựa chọn là hoán vị của nhau thì chỉ tính 1 cách và trong mỗi cách lựa chọn 1 phần tử không được chọn quá 1 lần.
Input
Dòng 1: Nhập vào 2 số nguyên dương n và k (n <= 5000, k <= 10^9);
Dòng 2: Nhập vào n số nguyên a1, a2, …, an (0 <= a[i] <= 10^9);Output
Ghi ra 1 số nguyên là số dư của kết quả tìm được chia cho 123456789.Ràng buộc
Có 40% số test tương ứng với 40% số điểm thỏa mãn điều kiện n <= 20;
Có 40% số test tương ứng với 40% số điểm thỏa mãn điều kiện 20 < n <= 40;
Có 20% số test tương ứng với 20% số điểm còn lại có a[i] = i, k = n, n <= 5000.Input
4 5
4 2 1 3Output
2Giải thích:
Cách 1: Lựa chọn phần tử thứ 1 và 3
Cách 2: Lựa chọn phần tử thứ 2 và 4
Nhờ mọi người giúp em subtask 2 với ạ, bài này mặc dù em đã sử dụng cách chia đôi tập hợp nhưng vẫn chỉ được 70% điểm thôi (Subtask 1 và Subtask 3 full điểm rồi ạ), với n > 26 là bị TLE, nhờ mọi người đóng góp ý tưởng. Em cảm ơn.
Code của em: https://ideone.com/lN2YSP
Đây là 1 test bị TLE
Input
29 432848760
18540521 6231505 47673444 43771452 15369503 16692981 49537041 44079168 45522931 24727484 8055287 13669114 40660444 46058848 47245187 24847835 11701156 36459182 16398195 33034551 46353007 14693862 36639646 10277084 29864541 15653844 16171415 25515836 4368252
Output
4