Trong các chương trình này có một số chương trình phu thuộc nhau.[r]
Trang 1Trường Đại Học Khoa Học Tự Nhiên Kỳ thi Olympic tin học SV Lần 1
ĐỀ THI KHỐI KHÔNG CHUYÊN
TpHCM ngày 06 tháng 03 năm 2004
Đề chính thức Đề thi có 3 bài, thời gian làm bài trong 180 phút.
Lưu ý: - Sinh viên đặt tên bài theo qui định ở bảng sau:
Bài Tên bài Tên file nguồn Tên file input Tên file output
BÀI 1: NUMBER (30 Điểm)
Cho một dãy N số nguyên, mỗi số có giá trị tuyệt đối không vượt quá 32000 Hãy viết chương trình tìm ra
3 số trong dãy trên có tích lớn nhất
Dữ liệu vào: từ file văn bản NUMBER.IN gồm:
Dòng 1 chứa số N ( 3 N 20.000)
Các dòng tiếp theo chứa N số của dãy
Dữ liêu ra: ghi vào file văn bản NUMBER.OUT trong đó chứa chỉ số của 3 số tìm được Các chỉ số của
dãy số được tính từ 1 đến N
Ví du
6
10 20 -30 15 -40 25
3 5 6
BÀI 2: ĐIỀU PHỐI CHƯƠNG TRÌNH (35 Điểm)
Có N chương trình phần mềm (được đánh số từ 1 tới N) cần được điều phối thực hiện trên một máy tính
Trong các chương trình này có một số chương trình phu thuộc nhau Chương trình J được coi là phu thuộc chương trình I nếu như J có sử dung dữ liệu kết quả xuất của I Như vậy, I phải thực hiện xong trước khi J bắt đầu (Lưu ý, một chương trình có thể không nhận dữ liệu từ bất kỳ chương trình nào, hoặc
có thể nhận dữ liệu vào từ nhiều chương trình khác)
Yêu cầu: Hãy lập trình sắp xếp trình tự thực hiện các chương trình sao cho đảm bảo mọi chương trình khi
được thực hiện đều tiếp nhận đầy đủ dữ liệu vào từ các chương trình mà nó phu thuộc
Dữ liệu vào: từ file văn bản TASK.IN, trong đó gồm có:
Dòng đầu tiên chứa 2 số N M Trong đó N (1N100) – là số lượng chương trình cần thực hiện
và M – số lượng các cặp chương trình phu thuộc nhau
Dòng thứ k trong M dòng tiếp theo chứa 2 số I J – cho biết thông tin chương trình J sẽ nhận dữ liệu vào từ kết quả của chương trình I , do đó sẽ thực hiện sau khi I kết thúc.
Dữ liệu ra: ghi vào file TASK.OUT, gồm N số là chỉ số các chương trình cần lần lượt thực hiện Trong
trường hợp nếu không có cách sắp xếp được trình tự thực hiện thì sẽ ghi số -1
Ví du:
5 4
1 2
2 3
1 3
1 5
1 4 2 5 3
Trang 2BÀI 3: NHÀ CAO TẦNG (35 Điểm)
Trong một thành phố nọ, theo quy hoạch chỉ được phép xây các toà nhà cao tầng Mỗi tòa nhà cao tầng là một khối hình chữ nhật được xây song song với các truc tọa độ Oxy, với chiều dương truc Ox đi từ Tây sang Đông, chiều dương truc Oy đi từ Nam lên Bắc Từ một phía của thành phố (Đông, Tây, Nam, Bắc),
ta nói là có thể nhìn thấy được tòa nhà K nếu như tồn tại một điểm ở phía đó khi nhìn theo phương thẳng góc ta có thể thấy được tòa nhà K
Yêu cầu: Hãy viết chương trình đọc một bản đồ quy hoạch thành phố và liệt kê tất cả những tòa nhà có
thể nhìn thấy được từ phía Nam
Sau đây là hình minh họa một bản đồ thành phố, và các tòa nhà có thể nhìn thấy được từ phía Nam
Dữ liệu vào: từ file văn bản BUILDING.IN, bao gồm:
Dòng 1 chứa N (1N100) – là số tòa nhà trong thành phố Các tòa nhà được đánh số từ 1 đến N
Dòng thứ i trong N dòng tiếp theo, mỗi dòng có 5 số nguyên X Y W D H, mô tả của tòa nhà thứ
i, trong đó:
o X, Y – là vị trí tọa độ góc Tây-Nam của tòa nhà ( 0 X,Y 10000)
o W – là độ rộng của tòa nhà (là độ dài ở mặt hướng Nam) ( 1 W 1000)
o D – là độ dài của tòa nhà (là độ dài ở mặt hướng Tây) ( 1 D 1000)
o H – là chiều cao của tòa nhà (1 H 1000)
Giả sử dữ liệu là hợp lệ và không có 2 tòa nhà nào trong bản đồ là chồng lên nhau
Dữ liệu ra: ghi vào file văn bản BUILDING.OUT gồm 2 dòng:
Dòng đầu ghi M – là số lượng tòa nhà nhìn thấy được từ phía Nam
Dòng tiếp theo ghi M số – lần lượt là số hiệu của các tòa nhà nhìn thấy được
Ví dụ: với bản đồ ở hình trên ta có dữ liệu và kết quả như sau:
14
160 0 30 60 30
125 0 32 28 60
95 0 27 28 40
70 35 19 55 90
0 0 60 35 80
0 40 29 20 60
35 40 25 45 80
0 67 25 20 50
0 92 90 20 80
95 38 55 12 50
95 60 60 13 30
95 80 45 25 50
165 65 15 15 25
165 85 10 15 35
8
5 9 4 3 10 2 1 14
Ghi chú :
Các số trên một dòng được ghi cách nhau bởi ít nhất một khoảng trắng.
Dữ liệu là đúng đắn không phải kiểm tra.
Cán bộ coi thi không giải thích gì thêm.
Hết