Diễn đàn tin học Nguyễn Văn Linh

The second house for every one
 
IndexTrợ giúpTìm kiếmThành viênĐăng kýĐăng Nhập

Share | 
 

 Xếp gạch

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
Hovanthong
Admin
Admin


Tổng số bài gửi : 101
Join date : 25/07/2010
Age : 22
Đến từ : Hưng nguyên-Nghệ An

Bài gửiTiêu đề: Xếp gạch   Tue 27 Jul 2010, 13:20

Cho một dãy N viên gạch lần lượt có độ cách nhiệt là các số a1.. aN. Nếu xếp lần lượt các viên gạch theo trình tự đó thì độ cách nhiệt cả khối là a1 + a2 + ... + aN + max(0, a2 - a1) + max(0, a3 - a2) + ... + max(0, aN - aN - 1). Nhiệm vụ của bạn là tìm cách xếp sao cho độ cách nhiệt của cả khối là lớn nhất có thể.
Dữ liệu

* Dòng đầu ghi số nguyên dương N (0 < n ≤ 10^5).
* N dòng sau mỗi dòng ghi một số ai ( 1 ≤ i ≤ N và 1 ≤ ai ≤ 10000).

Kết qủa

Ghi trên một dòng kết quả cần tìm.
Ví dụ


Dữ liệu:
4
5
4
1
7
Kết qủa
24
Về Đầu Trang Go down
http://thongtra.forum-viet.com
littlelee
Admin
Admin


Tổng số bài gửi : 415
Join date : 20/12/2009
Age : 21
Đến từ : Nghĩa địa

Bài gửiTiêu đề: Re: Xếp gạch   Wed 28 Jul 2010, 09:20

Xếp tăng dần laughing rolling on the floor

_________________
Đời là cây đinh, mình là cây búa.
Về Đầu Trang Go down
Hovanthong
Admin
Admin


Tổng số bài gửi : 101
Join date : 25/07/2010
Age : 22
Đến từ : Hưng nguyên-Nghệ An

Bài gửiTiêu đề: Re: Xếp gạch   Wed 28 Jul 2010, 15:50

Code:

Const          MaxN=100001;
Var            N,i:longint;
                S:longint;
                A:Array[1..MaxN] of longint;

procedure      Sort(L,R:longint);
Var            i,j,Key,Tam:longint;
Begin
                If L>=R then Exit;
                i:=L;
                j:=R;
                Key:=A[(L+R) div 2];
Repeat
                While A[i]<Key do Inc(i);
                While A[j]>Key do Dec(j);
                If i<=j then
                Begin
                        Tam:=A[i];
                        A[i]:=A[j];
                        A[j]:=Tam;
                        Inc(i);
                        Dec(j);
                End;
Until          i>j;
                Sort(i,R);
                Sort(L,j);
End;

BEGIN
                Readln(N);

                For i:=1 to N do
                Begin
                        Readln(A[i]);
                        S:=S+A[i];
                End;
                Sort(1,N);
                For i:=1 to N div 2 do
                Begin
                        S:=S+A[N-i+1]-A[i];
                End;
                Writeln(S);
END.





_________________
P.T.H.T
Về Đầu Trang Go down
http://thongtra.forum-viet.com
Sponsored content




Bài gửiTiêu đề: Re: Xếp gạch   Today at 18:47

Về Đầu Trang Go down
 
Xếp gạch
Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
Diễn đàn tin học Nguyễn Văn Linh :: Góc tin học :: Lớp chuyên tin-
Chuyển đến