MÔN: TIN HỌC (Thời gian làm bài 180 phút, không kể giao đề) Ngày thi: 24/10/2013

Similar documents
HƯỚNG DẪN CÀI ĐẶT PHẦN MỀM DIỆT VIRUS AVIRA

Hướng dẫn cài đặt FPT

STACK và QUEUE. Lấy STACK

Chương 5. Network Layer. Phần 1 - Địa chỉ IPv4. Tài liệu : Forouzan, Data Communication and Networking

HƯỚNG DẪN SỬ DỤNG HỆ THỐNG CẬP NHẬT CHỨNG THƯ SỐ HOTLINE:

Chương 5. Network Layer 19/09/2016 1

Chương 6. Transport Layer. Tài liệu : Forouzan, Data Communication and Networking

HƯỚNG DẪN SỬ DỤNG ĐẦU GHI H.264 DVR VISION VS (4CH - 8CH - 16CH)

HƯỚNG DẪN SỬ DỤNG PLESK PANEL

BÀI TẬP THỰC HÀNH LẬP TRÌNH WINDOWS C#

HƯỚNG DẪN CÁCH SỬ DỤNG WINDOWS MOVIE MAKER

Internet Protocol. Bởi: Phạm Nguyễn Bảo Nguyên

GIẢI THUẬT ĐỊNH TUYẾN (ROUTING ALGORITHM)

Entity Framework (EF)

Khối: Cao Đẳng nghề và Trung Cấp Năm 2009

TÀI LIỆU THỰC HÀNH MÔN CƠ SỞ DỮ LIỆU NÂNG CAO

BÀI 1: VBA LÀ GÌ? TẠO MACRO, ỨNG DỤNG CÁC HÀM TỰ TẠO (UDF), CÀI ĐẶT ADD-INS VBA là gì?

Bài Thực hành Asp.Net - Buổi 1 - Trang: 1

Tạo Project với MPLAB

Khoa KH & KTMT Bộ môn Kỹ Thuật Máy Tính

Tình huống 1: PPPoE với Username và Password

CẤU TRÚC DỮ LIỆU NÂNG CAO

BELGIUM ONLINE APPOINTMENT

Online Appointment System will work better with below conditions/ Hệ thống đặt hẹn online sẽ hoạt động tốt hơn với điều kiện sau đây:

HƢỚNG DẪN TRIỂN KHAI KASPERSKY - MOBILE DEVICE MANAGEMENT

Chương 7. Application Layer. Tài liệu : Forouzan, Data Communication and Networking

Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

Ôn tập Thiết bị mạng và truyền thông DH07TT - Lưu hành nội bộ (không sao chép dưới mọi hình thức)

Cụ thể những công việc mà AndroidManifest.xml thực hiện: - Đặt tên cho Java package của ứng dụng.

ĐỌC, GHI XML VỚI C# TRONG ADO.NET --- SỬ DỤNG VISUAL STUDIO

Kỹ thuật thu nhỏ đối tượng trong Design (Layout)

Bộ môn MMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

Nội dung chính của chương. Các công nghệ đĩa cứng Cấu tạo vật lý của đĩa cứng Cấu tạo logic của đĩa cứng Cài đặt đĩa cứng như thế nào?

Tạo repository mới. The working tree. The staging index. Lệnh git init tạo một repository loại git. tại thư mục hiện tại: $ git init

Tài liệu hướng dẫn: Stored Procedure

Bài tập căn bản Visual Basic.Net Vòng lặp. txtn. txtketqua. btntinh. txtn. txtketqua. btntinh. Trang 1

HƯỚNG DẪN SỬ DỤNG DỊCH VỤ CDN

Cài đặt và cấu hình StarWind iscsi trên Windows. iscsi SAN là gì?

HƯỚNG DẪN SỬ DỤNG DỊCH VỤ CDN

Nhấn nút New để tạo 1 biến mới Trang 17

Bài tập lớn số 1. Giả lập bộ định thời

TÀI LIỆU HƯỚNG DẪN SỬ DỤNG HOSTING PLESK PANEL

SIEMENS INDUSTRIAL NETWORKS

Giáo trình này được biên dịch theo sách hướng dẫn của Sun Light. Vì là hướng dẫn kỹ thuật, trong này những thuật ngữ kỹ thuật bằng tiếng Anh tôi chỉ

I. Hướng Dẫn Đăng Nhập:

Mô hình dữ liệu quan hệ (Relational data model)

Dọn "rác" Windows 7 vào dịp cuối năm

LẬP TRÌNH WINDOWS FORM VỚI CÁC CONTROL NÂNG CAO (Các control trình bày dữ liệu dưới dạng danh sách)

NHẬP MÔN LẬP TRÌNH KHOA HỌC DỮ LIỆU. Bài 10: Thư viện Pandas (2)

BÀI GIẢNG CHƯƠNG 3 GIAO TIẾP KẾT NỐI SỐ LIỆU

Môn Học: Cơ Sở Dữ Liệu 2. Chương 3 LẤY DỮ LIỆU TỪ NHIỀU NGUỒN

1 Bước 1: Test thử kit LaunchPad.

BÀI 6 LÀM VIỆC VỚI THÀNH PHẦN MỞ RỘNG CỦA CSS3

Phần 2. SỬ DỤNG POWERPOINT ĐỂ CHUẨN BỊ NỘI DUNG TRÌNH BÀY

Bài 10. Cấu trúc liên nối. khác nhau được gọi là cấu trúc liên nối. nhu cầu trao đổi giữa các module.

BÀI LAB ĐỔI TÊN DOMAIN

SIMULATE AND CONTROL ROBOT

HƯỚNG DẪN SỬ DỤNG NHANH MINDJET MIND MANAGER

Các kiểu định địa chỉ họ MSC-51

Bài 10: Cấu trúc dữ liệu

Tìm hiểu Group Policy Object và các ví dụ

Bài 13: C++11. EE3490: Kỹ thuật lập trình HK1 2017/2018 TS. Đào Trung Kiên ĐH Bách khoa Hà Nội

TỔNG QUAN VỀ.NET VÀ C#

B5: Time to coding. Tới thư mục src/example.java và thay đổi nội dung file như sau: Mã: package at.exam;

HỢP ĐỒNG MUA BÁN HÀNG HÓA QUỐC TẾ GV: NGUYỄN THỊ BÍCH PHƯỢNG

LÂ P TRI NH WEB ASP.NET

Parallels Cloud Server 6.0

Lecture 12. Trees (1/2) Nội dung bài học:

2.4. GIAO THỨC MQTT Các khái niệm cơ bản MQTT được phát triển bởi IBM và Eurotech, phiên bản mới nhất là MQTT 3.1 MQTT (Giao vận tầm xa) là

Đa ngôn ngữ (Internationalization) trong Servlet

HƯỚNG DẪN QUẢN TRỊ HỆ THỐNG

GV: Phạm Đình Sắc or

Khối: Cao Đẳng nghề và Trung Cấp Năm 2009

dụng một chính sách, điều này giúp dễ dàng quản lý và cung cấp tính năng Load Balancing (cân bằng tải) phục vụ tốt hơn các yêu cầu của tổ chức.

Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH MINICHAT. Bài giảng 3. Trang1. Khoa Khoa Học Và Kỹ Thuật Máy Tính

CHƯƠNG 2: CÁC ĐẶC ĐIỂM VỀ MÔI TRƯỜNG PHÁT TRIỂN (IDE)

Time Picker trong Android

LAB IP SLA Bài 1. Bùi Quốc Kỳ ***

Bài 7: Các cấu trúc điều khiển

BÀI THỰC HÀNH SỐ 1. Quản trị tập tin: 1/ Tạo các thư mục sau: Bài tập thực hành linux Linuxlab. bt1 bt11 bt111. bt121. bt12. bh1 bh11 bh111.

LINQ TO SQL & ASP.NET

NỘI DUNG ÔN TẬP MÔN HỆ CƠ SỞ DỮ LIỆU

KIẾN TRÚC MÁY TÍNH. Giảng viên: ThS. Phan Thanh Toàn. v

Các phiên bản SNMP. Chương 4

Cập nhật ResultSet trong JDBC

LẬP TRÌNH TEB308 / 824 CƠ BẢN BẰNG BÀN KEY

MỤC LỤC. Giáo trình Thiết kế web Trang 1

Mạng máy tính - Computer Network: Hệ. Giao thức - Protocol:

BẢO MẬT TRONG SQL SERVER

Bài thực hành số 2 QUYỀN và ROLE

METAPOST. 1.1 Cấu trúc file Metapost. 1.2 Cấu trúc trong Preamble. beginfig(...) endfig;... extra_beginfig(...) extra_endfig... begingraph(...

LẬP TRÌNH 8051 SỐ HỌC VÀ LÔ GIC

PHÁT TRIỂN ỨNG DỤNG WEB

Google Search Engine. 12/24/2014 Google Search Engine 1

TỔNG QUAN LẬP TRÌNH JAVA

Hướng Dẫn Thực Hành Tập tin & Thư mục

CHƯƠNG VII CASCADING STYLE SHEET-CSS

Cấu hình Router FTTH ---X---

Qu n ả tr h ố g t p ậ tin

Lab01: M V C Lưu ý: Để thực hành, các bạn phải cài Visual Studio 2013 trở lên mới hỗ trợ MVC5.

Transcription:

SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI LẬP ĐỘI TUYỂN DỰ THI QUỐC GIA TỈNH ĐẮK LẮK NĂM HỌC 2013-2014 ĐỀ CHÍNH THỨC (Đề thi gồm 02 trang) MÔN: TIN HỌC (Thời gian làm bài 180 phút, không kể giao đề) Ngày thi: 24/10/2013 Đề thi này gồm 02 trang (Thời gian làm bài 180 phút, không kể thời gian giao đề) Bài File bài làm Dữ liệu vào Kết quả Bài 1 - Từ đối xứng BAI1.PAS BAI1.INP BAI1.OUT Bài 2 - Biểu thức zero BAI2.PAS BAI2.INP BAI2.OUT Bài 3 - Tam giác số BAI3.PAS BAI3.INP BAI3.OUT Bài 1(6 điểm) - Từ đối xứng Hai từ được gọi là đối xứng nếu từ này là từ đảo ngược của từ kia. Cho file BAI1.INP mỗi dòng chứa một xâu ký tự. Hãy in ra số từ phân biệt có từ đối xứng ở trong mỗi dòng. Kết quả in ra file BAI1.OUT, mỗi dòng ghi số từ phân biệt có từ đối xứng. Nếu không có ghi kết quả là số 0. Ví dụ: BAI1.INP BAI1.OUT a 0 ab ab cd ba cd ba dc dc 2 tom la mot loai dong vat 1 Bài 2(7 điểm) - Biểu thức zero. Cho một số tự nhiên N 9. Dãy số được tạo thành gồm các chữ số từ 1 đến N theo thứ tự đó. Hãy điền vào các dấu +, -, hoặc là không điền dấu nào cả để tạo thành biểu thức có kết quả thu được bằng 0. Hãy viết chương trình tìm tất cả các khả năng có thể. Dữ liệu vào: Lấy từ file văn bản BAI2.INP với một dòng ghi số N. Dữ liệu ra: Ghi vào file văn bản có tên BAI2.OUT có cấu trúc như sau: - Dòng đầu ghi số lượng kết quả tìm được. - Các dòng sau mỗi dòng ghi một kết quả tìm được. Ví dụ BAI2.INP BAI2.OUT 7 6 1-2-3-4-5+6+7 = 0 1-2+3+4-5+6-7 = 0 1-23-45+67 = 0 1-23+4+5+6+7 = 0 1+2-3-4+5+6-7 = 0 1+2-3+4-5-6+7 = 0 Trang 1

Bài 3( 7 điểm) - Tam giác số Hình sau mô tả một tam giác số có số hàng N=5: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 Đi từ đỉnh (số 7) đến đáy tam giác bằng một đường gấp khúc, mỗi bước chỉ được đi từ số ở hàng trên xuống một trong hai số đứng kề bên phải hay bên trái ở hàng dưới, và cộng các số trên đường đi lại ta được một tổng. Ví dụ: đường đi 7 8 1 4 6 có tổng là S=26, đường đi 7 3 1 7 5 có tổng là S=23 Trong hình trên, tổng Smax=30 theo đường đi 7 3 8 7 5 là tổng lớn nhất trong tất cả các tổng. Nhiệm vụ của bạn là viết chương trình nhận dữ liệu vào là một tam giác số chứa trong text file BAI3.INP và đưa ra kết quả là giá trị của tổng Smax. Dữ liệu: cho trong file văn bản BAI3.INP: - Dòng thứ 1: có duy nhất 1 số N là số hàng của tam giác số (0<N<100). - N dòng tiếp theo, từ dòng thứ 2 đến dòng thứ N+1: dòng thứ i có (i-1) số cách nhau bởi dấu trống (space). Kết quả: Ghi ra file văn bản BAI3.OUT. Ví dụ: BAI3.INP 5 30 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 Thí sinh không được sử dụng tài liệu. ------- Hết -------- BAI3.OUT Giám thị không giải thích gì thêm. Họ và tên thí sinh... Số báo danh... Trang 2

SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI LẬP ĐỘI TUYỂN DỰ THI QUỐC GIA TỈNH ĐẮK LẮK NĂM HỌC 2013-2014 HƯỚNG DẪN CHẤM MÔN: TIN HỌC (Hướng dẫn chấm gồm 4 trang) Ngày thi: 24/10/2013 I. Phần chương trình nguồn BÀI 1 TỪ ĐỐI XỨNG var f,g:text;st:string; Function tudao(st:string):string; Var i:integer;st1:string; st1:=''; For i:=length(st) downto 1 do st1:=st1+st[i]; tudao:=st1; Function demtudx(st:string):integer; Var dem:integer;tu,tu1:string; dem:=0; st:=st+' '; While length(st)>1 do While st[1]=' ' do delete(st,1,1); tu:=copy(st,1,pos(' ',st)); if st<>'' then st:=' '+st; tu:=' '+tu; While pos(tu,st)>0 do delete(st,pos(tu,st),length(tu)-1); tu1:=tudao(tu); If (pos(tu1,st)>0) and (st[pos(tu1,st)+length(tu1)-1]=' ') then inc(dem); demtudx:=dem; procedure xuly; Var st:string; Assign(f,'bai1.inp'); Reset(f); Assign(g,'bai1.out'); Rewrite(g); While not eof(f) do Readln(f,st); Writeln(g,demtudx(st)); Trang 1

Close(f); Close(g); Trang 2 xuly; End. BÀI 2 Biểu thức zero Program Zero_sum; Type MangStr = array[1..15] of string; Const Fi ='BAI2.INP'; Fo ='BAI2.OUT'; Dau : array[1..3] of string[1] = ('-','+',''); S : array[1..9] of char =('1','2','3','4','5','6','7','8','9'); ChuSo = ['1'..'9']; Var N,k,dem: byte; D : array[2..9] of string[1]; F : Text; St : String; M : MangStr; Procedure Write_out; Var i : byte; Assign(F,Fo); Rewrite(F); Writeln(F,dem); For i:= 1 to dem do writeln(f,m[i],' = 0'); Close(F); Halt; Procedure Read_inp; Assign(F,Fi); Reset(F); Read(F,N); Close(F); If N < 3 then write_out; Function DocSo(S : String): longint; Var M : longint; t : byte; M:= 0; t:= 0; If S[k] in ['+','-'] then t:= k; Inc(k); While (k<= length(s)) and (s[k] in ChuSo) do m:= m*10 + ord(s[k]) - ord('0'); Inc(k);

If (t <> 0) and (S[t] = '-') then DocSo:= -M else DocSo:= M; Trang 3 Procedure Test; Var St : string; i : byte; T : longint; St:= '1'; k:= 1; T:= 0; For i:= 2 to N do St:= St + D[i] + S[i]; While k < length(st) + 1 do T:= T + DocSo(St); If T = 0 then Inc(dem); M[dem]:= St; Procedure Try(i: byte); Var j : byte; For j:= 1 to 3 do D[i]:= Dau[j]; If i = N then Test else try(i+1); BEGIN Read_inp; Try(2); Write_out; END. BÀI 3 TAM GIÁC SỐ { QUY HOẠCH ĐỘNG} Program bai3; Uses crt; Type mang = array[1..100,1..100] of integer; Var f:text; i,j,n:integer; a,b:mang; Procedure Input; clrscr; Assign(f,'bai3.inp'); reset(f); readln(f,n); for j:=1 to n do for i:=2 to j+1 do read(f,a[j,i]);

close(f); {----------------------------------} Function Max(m,n:integer):integer; if n>m then Max:=n else Max:=m; {----------------------------------} Procedure MakeArrayOfQHD; b[1,2]:=a[1,2]; for j:=1 to n do b[j,1]:=-maxint; for i:=3 to n do b[1,i]:=-maxint; for j:=2 to n do for i:=2 to j+1 do b[j,i]:=a[j,i]+max(b[j-1,i],b[j-1,i-1]); {-----------------------------------} Procedure FindMax; var max:integer; max:=b[n,1]; for i:=2 to n do if b[n,i]>max then max:=b[n,i]; assign(f,'bai3.out');rewrite(f); write(f,max); close(f); {------------------------------------} BEGIN Input; makearrayofqhd; FindMax; END. II. Hướng dẫn chấm. Bài 1: 3 Test, mỗi test đúng cho 2 điểm. Bài 2: 3 Test, mỗi test đúng cho 2 điểm + 1 điểm test mẫu ví dụ. Bài 3: 3 Test, mỗi test đúng cho 2 điểm + 1 điểm test mẫu ví dụ Chú ý: Kết quả có thể có nhiều phương án khác nhau do đó yêu cầu giám khảo xem xét kỹ khi chấm bài. ---- Hết ---- Trang 4

SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI LẬP ĐỘI TUYỂN DỰ THI QUỐC GIA TỈNH ĐẮK LẮK NĂM HỌC 2013-2014 ĐỀ CHÍNH THỨC (Đề thi gồm 02 trang) MÔN: TIN HỌC (Thời gian làm bài 180 phút, không kể giao đề) Ngày thi: 25/10/2013 Đề thi này gồm 02 trang (Thời gian làm bài 180 phút, không kể thời gian giao đề) Bài File bài làm Dữ liệu vào Kết quả Bài 1: - Biến đổi xâu BAI1.PAS BAI1.INP BAI1.OUT Bài 2: - Đội cờ BAI2.PAS BAI2.INP BAI2.OUT Bài 1(10 điểm) - Biến đổi xâu. Cho xâu kí tự U = u 1 u 2 u n, trong đó u i {a,b,c} = X (i=1,2,,n). Các phép biến đổi sau đây (đánh số thứ tự từ 1 đến 9) cho phép thay thế hai kí tự liên tiếp nhau trong xâu đã cho bởi một kí tự: 1) aa x 1 2) ab x 2 3) ac x 3 4) ba x 4 5) bb x 5 6) bc x 6 7) ca x 7 8) cb x 8 9) cc x 9 Trong đó x i X, i=1,2,...,9. Cần tìm cách áp dụng lần lượt các phép toán biến đổi đã có để chuyển xâu U về một kí tự định trước w X. Dữ liệu vào: cho trong file văn bản BAI1.INP: - Dòng đầu ghi số n. - N dòng tiếp theo mỗi dòng chứa một kí tự của xâu U theo thứ tự từ u 1 đến u n. - Dòng thứ i trong số 9 dòng tiếp theo chứa chữ cái x i, i=1,2,...,9. - Dòng cuối cùng chứa chữ cái w. Kết quả tìm được ghi ra file văn bản BAI1.OUT theo quy cách sau: - Dòng đầu tiên ghi số lượng phép biến đổi M cần áp dụng để chuyển xâu U thành chữ cái w, dòng này ghi số 0 nếu không tìm được phép biến đổi như vậy. - Nếu có thể biến đổi xâu đã cho về một kí tự thì dòng thứ i trong số M dòng tiếp theo ghi số thứ tự của phép biến đổi cần sử dụng và các chỉ số của hai kí tự liên tiếp nhau trong xâu đang biến đổi cần thay thế bằng một kí tự. Ví dụ: BAI1.INP 5 b b b b a b b a c BAI1.OUT 4 4 4 5 5 1 2 5 1 2 6 1 2 Trang 1

b a a c c a Dãy biến đổi có thể mô tả trong sơ đồ sau: (w = a) bbbba (4) bbbc (5) bbc (5) bc (6) a Bài 2(10 điểm) - Đội cờ. Có hai đội cờ vua A và B thi đấu với nhau. Mỗi đội cờ cử ra n kỳ thủ, mỗi kỳ thủ của đội B chỉ đấu một trận và chỉ đấu với một kỳ thủ của đội A và ngược lại. Vậy có tất cả n trận đấu. Đội nào thắng được 2 điểm, hoà được 1 điểm và thua được 0 điểm. Cho đội B được quyền chọn cặp thi đấu. Yêu cầu: Lập trình để đội B chọn được các cặp thi đấu sao cho tổng số điểm của đội B là cao nhất, cho biết trình độ của cầu thủ thứ i của đội A và B lần lượt là a[i] và b[i] (i=1,2,,n) và giả sử trong thi đấu, hai kỳ thủ có trình độ ngang nhau sẽ hoà và kỳ thủ nào có trình độ cao hơn sẽ thắng. Dữ liệu: Ghi trên file văn bản BAI2.INP gồm n+1 dòng: Dòng đầu tiên ghi số nguyên dương n, 1 n 1000 Dòng thứ i+1 ghi 2 số nguyên a[i], b[i] (1 a[i], b[i] 100) cách nhau ít nhất một khoảng trắng. Kết quả: Ghi ra file văn bản BAI2.OUT gồm n+1 dòng Dòng đầu ghi số nguyên T là tổng số điểm cao nhất mà đội B có thể đạt được. Dòng thứ i+1 (1 i n) ghi số nguyên dương x[i] (1 x[i] n) với x[i] là số thứ tự của kỳ thủ đội B phải thi đấu với kỳ thủ thứ i của đội A để tổng số điểm của đội B đạt được là T Ví dụ: BAI2.INP 4 7 8 5 6 4 3 9 4 BAI2.OUT 5 1 2 4 3 Thí sinh không được sử dụng tài liệu. ------- Hết -------- Giám thị không giải thích gì thêm. Họ và tên thí sinh... Số báo danh... Trang 2

Trang 1 SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI LẬP ĐỘI TUYỂN DỰ THI QUỐC GIA TỈNH ĐẮK LẮK NĂM HỌC 2013-2014 HƯỚNG DẪN CHẤM MÔN: TIN HỌC (Hướng dẫn chấm gồm có 5 trang) Ngày thi: 25/10/2013 I. Phần chương trình nguồn Bài 1: program biendoixau; {$B-,Q+,R+} {$M 65500,0,655360} const maxn = 20; fi = 'BAI1.INP' ; fo = 'BAI1.OUT'; bd: array[1..9] of string[2]= ('aa','ab','ac','ba','bb', 'bc','ca','cb','cc'); type sn= string[maxn]; s9= string[9]; mang= array[1..maxn] of byte; var a, vt: mang; m,n: byte; u: sn; x: s9; w: char; f: text; procedure khoitao; var i:byte; assign(f,fi); reset(f); readln(f,n); u:= ''; x:= ''; m:= n-1; for i:=1 to n do readln(f,w); u:=u+w; for i:=1 to 9 do readln(f,w); x:=x+w; read(f,w); close(f); procedure check; var t,i,kt: byte; s:sn; s:= u; for i:=1 to m do t:= pos(bd[a[i]],s); if t = 0 then exit; vt[i]:= t; delete(s,t,2); insert(x[a[i]],s,t); if pos(w,s) > 0 then writeln(f,m);

for i:= 1 to m do writeln(f,a[i],' ',vt[i], ' ',vt[i]+1); close(f);halt; procedure tim(i:byte); var j:byte; if i>m then check else for j:=1 to 9 do a[i]:= j; tim(i+1); procedure xuly; assign(f,fo); rewrite(f); tim(1); write(f,0); close(f); BEGIN khoitao; xuly; END. Trang 2 BÀI 2: program doico; const tfi = 'BAI2.INP'; tfo = 'BAI2.OUT'; maxn = 1000; var fi, fo : text; N : integer; dd,x,a,b,csa,csb : array[1..maxn] of integer; DiemMax : integer; procedure Docdl; var i: integer; assign(fi,tfi); reset(fi); readln(fi,n); for i:=1 to N do read(fi,a[i],b[i]); close(fi); procedure Doi(var u,v: integer); var w: integer; w:=u; u:=v; v:=w; procedure SortA(k,l: integer);

var i,j,mid: integer; mid:=a[(k+l) div 2]; i:=k; j:=l; repeat while a[i]<mid do inc(i); while a[j]>mid do dec(j); if i<=j then Doi(a[i],a[j]); Doi(csA[i],csA[j]); inc(i); dec(j); until i>j; if j>k then SortA(k,j); if i<l then SortA(i,l); Trang 3 procedure SapxepA; var i: integer; for i:=1 to N do csa[i]:=i; SortA(1,N); procedure SortB(k,l: integer); var i,j,mid: integer; mid:=b[(k+l) div 2]; i:=k; j:=l; repeat while b[i]>mid do inc(i); while b[j]<mid do dec(j); if i<=j then Doi(b[i],b[j]); Doi(csB[i],csB[j]); inc(i); dec(j); until i>j; if j>k then SortB(k,j); if i<l then SortB(i,l); procedure SapXepB; var i: integer; for i:=1 to N do csb[i]:=i; SortB(1,n);

function TimA(r: integer): integer; var i: integer; for i:=n downto 1 do if (dd[csa[i]]=0) and (a[i]<r) then TimA:=i; exit; for i:=n downto 1 do if (dd[csa[i]]=0) and (a[i]=r) then TimA:=i; exit; TimA:=0; Trang 4 procedure Ghep; var j,limit,i,k: integer; fillchar(dd,sizeof(dd),0); fillchar(x,sizeof(x),0); i:=1; DiemMax:=0; limit:=n; repeat k:=tima(b[i]); if k>0 then x[csa[k]]:=csb[i]; dd[csa[k]]:=1; if b[i]>a[k] then inc(diemmax,2) else inc(diemmax,1); limit:=k-1; inc(i); until k=0; for j:=i to N do repeat inc(k) until dd[k]=0; x[k]:=csb[j]; procedure inkq; var i: integer; assign(fo,tfo); rewrite(fo); writeln(fo,diemmax); for i:=1 to N do writeln(fo,x[i]); close(fo); BEGIN

Trang 5 Docdl; SapXepA; SapXepB; Ghep; Inkq; END. II. Hướng dẫn chấm. Bài 1: 5 Test, mỗi test đúng cho 2 điểm Bài 2: 5 Test, mỗi test đúng cho 2 điểm Chú ý: Kết quả có thể có nhiều phương án khác nhau do đó yêu cầu giám khảo xem xét kỹ khi chấm bài. ---- Hết ----