Bài này như thế nào mọi người giúp mình

Khắc Hiếu vừa đậu đại học, cậu ra Hà Nội và gặp anh Khánh Hòa – một thành viên cũ của đội tuyển quốc gia môn Tin học. Hiếu muốn tìm hiểu về các bến xe Buýt ở Hà Nội còn Hòa thì biết rất rõ về các bến xe và số lượng xe của các bến xe. Hà Nội có N bến xe Buýt được đánh số từ 1 đến N, Hòa đố Hiếu: Hãy chọn trong N bến xe Buýt một số xe sao cho tổng số xe của 3 bến bất kỳ được chọn không lớn hơn tổng số xe của các bến còn lại và số lượng bến xe được chọn là nhiều nhất. Phần thưởng là một chuyyến dạo chơi bằng xe Buýt để ngắm thành phố Hà Nội. Bạn hãy giúp Hiếu.
Dữ liệu vào: từ file văn bản BUYT.INP
- Dòng đầu tiên ghi số N cho biết số bến xe Buýt (4≤ N≤104)
- Dòng tiếp theo ghi N số nguyên dương A1 ... AN (Ai là số lượng xe của bến xe thứ i, Ai≤102).
Dữ liệu ra: Ghi vào file văn bản BUYT.OUT
- Dòng duy nhất ghi số lượng bến xe được chọn.
Các số trên một dòng ghi cách nhau bởi một dấu cách.
HTML:
const
        nmax=100000;
var     a:array[1..nmax]of longint;
        n:longint;
procedure       enter;
var     i:longint;f:text;
begin
        assign(f,’BUYT.inp’);Reset(f);
        readln(f,n);
        for i:=1 to n do
                read(f,a[i]);
        Close(f);
end;
procedure       quicksort(l,h:longint);
var     i,j,x,tg:longint;
begin
        i:=l;
        j:=h;
        x:=a[(l+h) shr 1];
        repeat
                while a[i]<x do inc(i);
                while a[j]>x do dec(j);
                if i<=j then
                        begin
                                tg:=a[i];
                                a[i]:=a[j];
                                a[j]:=tg;
                                inc(i); dec(j);
                        end;
        until i>j;
        if j>l then quicksort(l,j);
        if i<h then quicksort(i,h);
end;
procedure       main;
var     i:longint;
        sum:int64;
        f:text;
begin
        assign(f,’BUYT.out’);
rewrite(f);
   sum:=0;
        for i:=1 to n do
                sum:=sum+a[i];
        i:=n;
        while i>3 do
            if (a[i]+a[i-1]+a[i-2])<=(sum shr 1) then break
            else dec(i);
        write(f,'so xe chon duoc nhieu nhat la: ',i);
         Close(f);
end;
BEGIN
        enter;
        quicksort(1,n);
        main;
        readln
Mình đã làm được rồi nhưng mình text bộ text này mình nghi nó sai với đề bài
5
5 6 7 8 9
out = 3 giải thích giúp mình bộ text trên dúng hay sai
 
Sửa lần cuối:

tengiday

Happy life
Đề bài này còn thiếu gì đó. Nếu như ko tìm đc dãy nào thỏa mãn thì in ra cái gì? Hay dãy chỉ 3 phần tử thì tính ra sao? Ngay chính ví dụ 5 6 7 8 9 của bạn đã nói lên điều đó.
 
Top