Tin học Tây Sơn

Tổ chức tham quan

Go down

Tổ chức tham quan

Bài gửi by Admin on Sat Dec 08, 2018 4:32 pm

Trong đợt tổ chức đi tham quan danh lam thắng cảnh huyện tây sơn, Ban tổ chức hội thi Tin học trẻ tổ chức cho N đoàn ( đánh từ số 1 đến N) mỗi đoàn đi thăm quan một địa điểm khác nhau. Đoàn thứ i đi thăm địa điểm ở cách Khách sạn Hoàng Đế di km (i=1,2,...., N). Hội thi có M xe taxi đánh số từ 1 đến M (M³N) để phục vụ việc đưa các đoàn đi thăm quan. Xe thứ j có mức tiêu thụ xăng là vj đơn vị thể tích/km.
Yêu cầu: Hãy chọn N xe để phục vụ việc đưa các đoàn đi thăm quan, mỗi xe chỉ phục vụ một đoàn, sao cho tổng chi phí xăng cần sử dụng là ít nhất.
Dữ liệu: File văn bản P2.INP:
- Dòng đầu tiên chứa hai số nguyên dương N, M (N£M£200);
- Dòng thứ hai chứa các số nguyên dương d1, d2, ..., dN;
- Dòng thứ ba chứa các số nguyên dương v1, v2, ..., vM.
- Các số trên cùng một dòng được ghi khác nhau bởi dấu trắng.
Kết quả: Ghi ra file văn bản P2.OUT:
- Dòng đầu tiên chứa tổng lượng xăng dầu cần dùng cho việc đưa các đoàn đi thăm quan (không tính lượt về);
- Dòng thứ i trong số N dòng tiếp theo ghi chỉ số xe phục vụ đoàn i (i=1, 2, ..., N).
 
Ví dụ:


 
P2.INP
 
P2.OUT
3 4
7 5 9
17 13 15 10
 
256
2
3
4
avatar
Admin
Admin
Admin

Posts : 658
Reputation : -39
Join date : 16/11/2015
Age : 29

Xem lý lịch thành viên http://tinhocts.forumvi.com

Về Đầu Trang Go down

Re: Tổ chức tham quan

Bài gửi by tonguyengiahan237 on Sat Dec 08, 2018 10:04 pm

Code:
Program Tham_quan;
Uses crt;
Type Mang=array[1..100]of integer;
Var d,v,l:Mang;
    N,M:integer;
    fi,fo:text;

Procedure Docdl(Var d,v,l:Mang;Var N,M:integer;Var fi:text);
Var i,j,k:integer;
Begin
Assign(fi,'P2.INP');
Reset(fi);
Read(fi,N,M);
Readln(fi);
k:=1;
        For i:=1 to N do
                begin
                Read(fi,d[i]);
                If i=N then Readln(fi);
                end;
        For j:=1 to M do
                begin
                Read(fi,v[j]);
                l[k]:=v[j];
                inc(k);
                end;
Close(fi);
End;

Procedure Sx_giam(Var d:Mang;Var N:integer);
Var i,j,tam:integer;
Begin
 For i:=1 to N-1 do
        For j:=i+1 to N do
        If d[j]>d[i] then
                begin
                tam:=d[i];
                d[i]:=d[j];
                d[j]:=tam;
                end;
End;

Procedure Sx_tang(Var v:Mang;Var M:integer);
Var j,i,tam:integer;
Begin
 For j:=1 to M-1 do
        For i:=j+1 to M do
        If v[i]<v[j] then
                begin
                tam:=v[j];
                v[j]:=v[i];
                v[i]:=tam;
                end;
End;

Procedure Vietdl(Var d,v,l:Mang;Var N,M:integer;Var fo:text);
Var i,j,Tong,k:integer;
Begin
Assign(fo,'P2.OUT');
Rewrite(fo);
Sx_giam(d,N);
Sx_tang(v,M);
Tong:=0;
i:=1;
For j:=1 to M do
        Begin
        Tong:=Tong+(d[i]*v[j]);
        If j=N then break;
        i:=i+1;
        end;
Writeln(fo,Tong);
For j:=1 to M do
        begin
        For k:=1 to M do
        If v[j]=l[k] then writeln(fo,k);
        If j=N then break;
        end;
Close(fo);
End;

BEGIN
CLRSCR;
Docdl(d,v,l,N,M,fi);
Vietdl(d,v,l,N,M,fo);
READLN;
END.

avatar
tonguyengiahan237
Teen Chính hiệu
Teen Chính hiệu

Posts : 28
Reputation : -2
Join date : 06/11/2018
Age : 14
Location : TT Phú Phong Huyện Tây Sơn Tỉnh Bình Định

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Tổ chức tham quan

Bài gửi by Admin on Sun Dec 09, 2018 10:51 am

tonguyengiahan237 đã viết:
Code:
Program Tham_quan;
Uses crt;
Type Mang=array[1..100]of integer;
Var d,v,l:Mang;
    N,M:integer;
    fi,fo:text;

Procedure Docdl(Var d,v,l:Mang;Var N,M:integer;Var fi:text);
Var i,j,k:integer;
Begin
Assign(fi,'P2.INP');
Reset(fi);
Read(fi,N,M);
Readln(fi);
k:=1;
        For i:=1 to N do
                begin
                Read(fi,d[i]);
                If i=N then Readln(fi);
                end;
        For j:=1 to M do
                begin
                Read(fi,v[j]);
                l[k]:=v[j];
                inc(k);
                end;
Close(fi);
End;

Procedure Sx_giam(Var d:Mang;Var N:integer);
Var i,j,tam:integer;
Begin
 For i:=1 to N-1 do
        For j:=i+1 to N do
         If d[j]>d[i] then
                begin
                tam:=d[i];
                d[i]:=d[j];
                d[j]:=tam;
                end;
End;

Procedure Sx_tang(Var v:Mang;Var M:integer);
Var j,i,tam:integer;
Begin
 For j:=1 to M-1 do
        For i:=j+1 to M do
         If v[i]<v[j] then
                begin
                tam:=v[j];
                v[j]:=v[i];
                v[i]:=tam;
                end;
End;

Procedure Vietdl(Var d,v,l:Mang;Var N,M:integer;Var fo:text);
Var i,j,Tong,k:integer;
Begin
Assign(fo,'P2.OUT');
Rewrite(fo);
Sx_giam(d,N);
Sx_tang(v,M);
Tong:=0;
i:=1;
For j:=1 to M do
        Begin
        Tong:=Tong+(d[i]*v[j]);
        If j=N then break;
        i:=i+1;
        end;
Writeln(fo,Tong);
For j:=1 to M do
        begin
        For k:=1 to M do
        If v[j]=l[k] then writeln(fo,k);
        If j=N then break;
        end;
Close(fo);
End;

BEGIN
CLRSCR;
Docdl(d,v,l,N,M,fi);
Vietdl(d,v,l,N,M,fo);
READLN;
END.

bài này yêu cầu sử dụng mảng 2 chiều nhé Hân!
avatar
Admin
Admin
Admin

Posts : 658
Reputation : -39
Join date : 16/11/2015
Age : 29

Xem lý lịch thành viên http://tinhocts.forumvi.com

Về Đầu Trang Go down

Re: Tổ chức tham quan

Bài gửi by Sponsored content


Sponsored content


Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết