Bạn Nam được thầy giáo giao cho N bài tập về nhà, mỗi bài tập có mức độ khó khác nhau được đánh giá bởi giá trị a[i]. Để làm được bài tập thứ i thì bạn An cần phải có kĩ năng lớn hơn hoặc bằng mức độ khó a[i]. Mỗi khi làm được bài độ khó là a[i] thì kĩ năng giải bài tập của cậu được tăng thêm một bậc lượng là a[i]. Ban đầu kĩ năng làm bài của An là S. Yêu cầu: Hãy cho biết An có thể giải được tối đa bao nhiêu bài tập. Dữ liệu vào: -Dòng 1 chứa N và S (1 ≤ N ≤ 100, S ≤ 1000) -Dòng 2 chứa N số nguyên a[1], a[2], a[3], ..., a[N]. Kết quả ra: -Một số nguyên duy nhất là số lượng bài tập lớn nhất mà An làm được. Viết CT bằng Pascal

1 câu trả lời

uses crt;
var A : array [1 .. 100] of integer;
    s, dem, i, n, j, X : longint;
    
begin
    clrscr;
    read(n, s);
    
    dem := 0;
    for i := 1 to n do read(A[i]);

    for j := N downto 2 do 
        for i := 1 to j - 1 do
            if A[i] > A[i + 1] then
                begin
                    X := A[i];
                    A[i] := A[i + 1];
                    A[i + 1] := X;
                end;
                
    for i := 1 to N do
        if s >= a[i] then 
        begin
            dem := dem + 1;
            s := s + a[i];
        end
        else break;
        
    writeln(dem);
    readln
end.

Câu hỏi trong lớp Xem thêm