Tải bản đầy đủ (.doc) (15 trang)

Download đề và đáp án thi học sinh giỏi lớp 12 môn tin học 2004 2005 tỉnh quảng bình (2 vòng)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (124.56 KB, 15 trang )

Vòng 1
Câu 1: (3 điểm) Phân tích số.
Tên file bài làm: SO.PAS
Hãy phân tích số nguyên dơng N thành tổng các số nguyên dơng khác nhau sao
cho tích của chúng là lớn nhất.
Dữ liệu vào: Cho trong file SO.INP có cấu trúc nh sau:
Dòng 1: Ghi số N (1Dữ liệu ra: Ghi ra file SO.OUT theo cấu trúc nh sau:
Dòng 1: Ghi số K là số lợng số hạng của cách phân tích.
Dòng 2: Ghi K số hạng của cách phân tích theo thứ tự tăng dần. Các số ghi cách nhau ít
nhất một dấu cách.
Ví dụ:
SO.INP
17

SO.OUT
4
2 4 5 6

Câu 2: (3.5 điểm) Sắp xếp dãy số.
Tên file bài làm: DAYSO.PAS
Cho dãy số nguyên a1 ,a2 ,..., an (1cách thực hiện một số ít nhất phép đổi chỗ hai số hạng bất kỳ của dãy để thu đợc dãy số
mà số lẽ đứng ở vị trí lẽ, số chẵn đứng ở vị trí chẵn.
Dữ liệu vào: Cho trong file DAYSO.INP có cấu trúc nh sau:
Dòng 1: Ghi số n (là số lợng các số trong dãy).
Dòng 2: Ghi n số ai. Các số ghi cách nhau ít nhất một dấu cách.
Dữ liệu ra: Ghi ra file DAYSO.OUT theo cấu trúc nh sau:
Dòng 1:
Nếu không đổi đợc thì ghi -1
Nếu đổi đợc thì ghi số K là số lợng phép đổi chỗ cần thực hiện và K dòng


tiếp theo: Mỗi dòng j ghi 2 số j 1 j2 là chỉ số của hai số hạng cần đổi chỗ cho nhau ở lần
đổi chỗ thứ j. Hai số j1 j2 ghi cách nhau ít nhất một dấu cách.
Ví dụ:
DAYSO.INP
DAYSO.OUT
DAYSO.INP
DAYSO.OUT
6
1
4
-1
1 2 3 4 6 5
5 6
1 3 2 5
Chú ý: Có thể có nhiều cách đổi chỗ, chỉ cần đa ra một cách đổi chỗ đúng.


Câu 3: (3.5 điểm) Xếp hàng mua vé.
Tên file bài làm: TICK.PAS
Có N ngời (N nguyên, 1có tên nhỏ hơn thì xếp trớc (và đợc mua trớc). Mỗi ngời chỉ đợc mua 1 vé cho mình
và có thể mua thêm 1 vé cho ngời đứng kế sau. Ngời bán vé chỉ bán cho mỗi ngời
không quá 2 vé. Biết Ti là thời gian để ngời thứ i mua vé của mình (0i=1..N). Nếu ngời i+1 nhờ ngời i mua hộ vé của mình thì thời gian để ngời i mua vé
cho cả hai ngời là Ri (0Yêu cầu: Hãy xét xem ngời nào cần đứng lại mua vé, ngời nào cần rời khỏi hàng
và nhờ ngời đứng ngay trớc mình mua hộ vé sao cho tổng thời gian bán đủ vé cho N ngời
là nhỏ nhất.
Dữ liệu vào: Cho trong file TICK.INP có cấu trúc nh sau:
Dòng 1: Ghi số N.

Dòng 2: Ghi N số nguyên dơng Ti. Các số ghi cách nhau ít nhất 1 dấu cách.
Dòng 3: Ghi N-1 số nguyên dơng Ri. Các số ghi cách nhau ít nhất 1 dấu cách.
Dữ liệu ra: Ghi ra file TICK.OUT theo cấu trúc nh sau:
Dòng 1: Ghi số S là tổng thời gian bán vé nhỏ nhất tìm đợc.
Dòng 2: Ghi tên các ngời còn ở lại trong hàng để mua vé theo thứ tự giảm dần.
Ví dụ:
TICK.INP
TICK.OUT
5
11
3 6 2 7 3
5 3 1
4 8 4 8
Lu ý: Trong trờng hợp có nhiều kết quả đúng, chỉ cần đa ra đợc một kết quả.


hớng dẫn chấm
vòng 1
I/ Phơng pháp chung
- Giám khảo tạo các bộ dữ liệu vào, tính toán kết quả. Chạy chơng trình của học sinh và
so sánh kết quả.
- Giám khảo có thể sử dụng chơng trình mẫu để tính kết quả của dữ liệu vào: SO.PAS
DAYSO.PAS TICK.PAS
- Chơng trình học sinh chạy đúng mỗi bộ test, giám khảo cho 0.5 điểm. Nh vậy, nếu câu
hỏi có 3 điểm thì giám khảo phải tạo đợc 6 bộ test.
-Nếu chơng trình chạy sai test nào thì giám khảo cho 0 điểm đối với test đó.
- Bài toán có thể có nhiều kết quả đúng, nếu kết quả của học sinh khác với đáp án nhng
vẫn đúng thì giám khảo vẫn cho điểm tối đa.
- Giám khảo có thể sử dụng các test gợi ý dới đây nếu cần thiết.
II/ Chơng trình mẫu

SO.PAS
{$r+}
const
fi='so.in6';
fo='so.ou6';
type mmc=array[1..1000] of word;
var n,spt:word;
a:mmc;
procedure doc;
var f:text;
begin
assign(f,fi);reset(f); readln(f,n);close(f);
end;
procedure xl;
var i:word;
begin
i:=1;
while n>i+1 do
begin
a[i]:=i+1;
n:=n-(i+1);
i:=i+1;
end;
spt:=i-1;
while n>0 do
begin
i:=spt;
while (n>0) and (i>=1) do begin a[i]:=a[i]+1;n:=n-1;i:=i-1;end;
end;
end;

procedure xuat;
var f:text; i:word; tich:longint;
begin
assign(f,fo);rewrite(f); writeln(f,spt);
for i:=1 to spt do write(f,a[i],' ');
close(f);
end;
begin doc; xl; xuat; {readln;} end.

DAYSO.PAS

{$r+}
const
fi='dayso.in7';
fo='dayso.ou7';
type mmc=array[0..10001] of integer;
var a,mcl,mlc:mmc;
n:word;
procedure doc;
var f:text; i:word;
begin


assign(f,fi);reset(f);readln(f,n);
for i:=1 to n do read(f,a[i]);
close(f);
end;
procedure xl;
var i,lc,cl:word; f:text;
begin

lc:=0;cl:=0;
for i:=1 to n do
begin
if (i mod 2=0) and (a[i] mod 2<>0) then
begin
lc:=lc+1;
mlc[lc]:=i;
if (i mod 2<>0) and (a[i] mod 2=0) then
begin
cl:=cl+1;
mcl[cl]:=i;
end;
assign(f,fo);rewrite(f);
if lc=cl then
begin
writeln(f,cl);
for i:=1 to cl do writeln(f,mcl[i],' ',mlc[i]);
end
else writeln(f,-1);
close(f);
end;
begin doc; xl; end.

end;
end;

TICK.PAS

const maxn=100;
fi='tick.in8';

fo='tick.ou8';
type
mmc=array[1..maxn] of word;
var
r,t,c:mmc;s:word;
n:word;f:text;
procedure doc;
var i:word;
begin
assign(f,fi);reset(f); readln(f,n);
for i:=1 to n do read(f,t[i]); readln(f);
for i:=1 to n-1 do read(f,r[i]);
close(f);
end;
function min(a,b:word):word;
begin if aprocedure
xl;
var i:word;
begin
fillchar(c,sizeof(c),0); c[1]:=t[1];c[2]:=min(c[1]+t[2],r[1]);
for i:=3 to n do
c[i]:=min(c[i-1]+t[i],c[i-2]+r[i-1]);
end;
procedure xuat;
var i:word;
begin
assign(f,fo);rewrite(f);
i:=n;s:=c[i];writeln(f,s);
while i>2 do

if s=c[i-1]+t[i] then
begin
write(f,i,' '); i:=i-1;s:=c[i];
else
begin
write(f,i-1,' '); i:=i-2;s:=c[i];
write(f,1); close(f);
end;
begin doc; xl; xuat; {readln;} end.

end
end;


III/ Một số test gợi ý.
SO.PAS
SO.IN
10
3
2 3
20
4
3 4
30
6
2 3
100
12
2 3
111

13
2 3
15
4
2 3

SO.OU
5
6 7
4 6 7 8
5 6 7 8 9 10 11 12 13 14
4 5 6 7 9 10 11 12 13 14 15
4 6

DAYSO.PAS
DAYSO.IN
12
5 -3 7 5 3 4 6 4 2 1 2 2

DAYSO.OU
3
72
94
11 10
-1

12
4 3 7 5 3 4 6 4 2 1 2 2
8
0

1 2 3 10 9 8 7 6
8
-1
8 8 8 8 8 8 8 8
8
-1
1 1 1 1 1 1 1 1
6
1
5 6 2 3 1 2
34
2
1
2 1
12
Giám khảo lu ý khi sử dụng các test để chấm bài
+ Số phép đổi chỗ của học sinh bắt buộc phải giống đáp án.
+ Trình tự đổi chỗ có thể có nhiều cách khác nhau


TICK.PAS
TICK.IN
20
4 5
8 3
3
3 2
1 2
10
8 9

1 1
12
4 6
8 3
10
2 2
2 2
5
1 2
5 4
5
1 2
1 2

7 4 3 1 4 5 6 3 8 6 2 7 8 5 3 4 6 7
4 5 2 6 7 8 6 6 7 3 2 5 6 8 7 9 10
1
6 7 4 5 2 3 1 1
3 2 5 4 7 6 8
6 2 7 8 5 3 4 6 7 12
4 5 2 6 7 8 6 8 9
2 2 2 2 2 2 2 2
2 2 2 2 2 2 2
3 4 5
3 2
3 4 5
3 4

TICK.OU
58

19 18 17 15 13 11 9 7 6 4 2 1
2
31
16
10 9 8 7 5 3 1
33
11 9 7 5 4 2 1
10
97531
7
421
7
421

Giám khảo lu ý khi sử dụng các test để chấm bài
+ Tổng thời gian bán vé của học sinh bắt buộc phải giống đáp án.
+ Tên của ngời ở lại trong hàng có thể có nhiều cách khác nhau


Vòng 2
Câu 1: (3.5 điểm) Chia bánh.
Tên file bài làm: CAKE.PAS
Trong buổi tối trung thu có một cái bánh hình tròn. Bánh đợc viền quanh bởi N
quả dâu và quả sim (1sao cho số lợng quả dâu ở phần này bằng số lợng quả dâu ở phần kia và số lợng quả sim
ở phần này bằng số lợng quả sim ở phần kia.
Dữ liệu vào: Cho trong file CAKE.INP có cấu trúc nh sau:
Dòng 1: Ghi số N là số lợng quả dâu và quả sim ở trên viền bánh.
Dòng 2: Ghi dãy gồm N ký tự D hoặc S ghi liền nhau. Các vị trí gắn quả trên bánh
đợc đánh số từ 1 đến N theo chiều kim đồng hồ bắt đầu từ một vị trí tuỳ ý.

Dữ liệu ra: Ghi ra file CAKE.OUT có cấu trúc nh sau:
Dòng 1:
Nếu không tìm đợc cách chia thì ghi số -1
Nếu tìm đợc cách chia thì ghi hai số nguyên dơng a, b (aquả ở vị trí a, a+1, ..., b là các quả thuộc cùng một trong hai phần bánh.
Ví dụ:
CAKE.INP
CAKE.OUT
CAKE.INP
CAKE.OUT
6
35
5
-1
DSSSDS
DSDDS
Chú ý: Có thể có nhiều cách chia bánh, chỉ cần đa ra một cách chia đúng.
1

2

6

3
5

4

Câu 2: (3.5 điểm) Mật khẩu.
Tên file bài làm: PASS.PAS

Một nhóm gồm K học sinh (0Khi cài đặt phần mềm này, ngời sử dụng phải nhập vào mật khẩu. Khi biết các khách
hàng là học sinh say mê Tin học, chủ cửa hàng đã đa cho mỗi học sinh i một con số x i
(1<=xi <=65535) và nói rằng Mật khẩu để cài đặt là số nguyên dơng lớn nhất m mà tất
cả các số tôi đã đa cho các bạn đều chia hết cho m
Yêu cầu: Biết tất cả các số mà chủ cửa hàng đã đa cho các học sinh, hãy tìm mật khẩu
để cài đặt phần mềm.
Dữ liệu vào: Cho trong file PASS.INP có cấu trúc nh sau:
Dòng 1: Ghi số K là số học sinh.


Dòng 2: Ghi K số nguyên dơng xi (i=1..k) mà ông chủ đã đa cho các học sinh, các số ghi
cách nhau ít nhất một dấu cách.
Dữ liệu ra: Ghi ra file PASS.OUT theo cấu trúc nh sau:
Dòng 1: Ghi số m là mật khẩu tìm đợc.
Ví dụ:
PASS.INP
PASS.OUT
3
15
30 75 60
Câu 3: (3 điểm) Lập lịch gia công trên hai máy.
Tên file bài làm: LICH.PAS
Có N chi tiết D1 D2 ... Dn (1lần lợt gia công trên cả 2 máy A và B. Bắt đầu gia công trên máy A, sau khi xong chuyển
tiếp sang gia công trên máy B. Giả thiết thời gian chuyển xem nh không đáng kể và hai
máy A, B là cùng hoạt động song song. Thời gian gia công chi tiết D i trên máy A là ai,
trên máy B là bi (i=1..n). Hãy tìm trình tự gia công các chi tiết trên hai máy sao cho việc
hoàn thành gia công tất cả N chi tiết là sớm nhất có thể đợc.
Dữ liệu vào: Cho trong file LICH.INP có cấu trúc nh sau:

Dòng 1: Ghi số N (là số lợng chi tiết)
Dòng 2: Ghi N số ai (là thời gian gia công chi tiết Di trên máy A; 0<=ai<=32767)
Dòng 3: Ghi N số bi (là thời gian gia công chi tiết Di trên máy B; 0<=bi<=32767)
Dữ liệu ra: Ghi ra file LICH.OUT theo cấu trúc nh sau:
Dòng 1: Ghi thời gian hoàn thành sớm nhất tìm đợc.
Dòng 2: Ghi N số là chỉ số của các chi tiết theo trình tự tìm đợc.
Ví dụ
LICH.INP
LICH.OUT
5
26
3 4 6 5 6
1 4 2 5 3
3 3 2 7 3
Chú ý: Có thể có nhiều cách sắp xếp trình tự gia công, chỉ cần đa ra một cách đúng.


hớng dẫn chấm
vòng 2
I/ Phơng pháp chung
- Giám khảo tạo các bộ dữ liệu vào, tính toán kết quả. Chạy chơng trình của học sinh và
so sánh kết quả.
- Giám khảo có thể sử dụng chơng trình mẫu để tính kết quả của dữ liệu vào. CAKE.PAS
PASS.PAS LICH.PAS
- Chơng trình học sinh chạy đúng mỗi bộ test, giám khảo cho 0.5 điểm. Nh vậy, nếu câu
hỏi có 3 điểm thì giám khảo phải tạo đợc 6 bộ test.
- Nếu chơng trình chạy sai test nào thì giám khảo cho 0 điểm đối với test đó.
- Bài toán có thể có nhiều kết quả đúng, nếu kết quả của học sinh khác với đáp án nhng
vẫn đúng thì giám khảo vẫn cho điểm tối đa.
- Giám khảo có thể sử dụng các test gợi ý dới đây.

II/ Chơng trình mẫu
CAKE.PAS
const
fi='cake.in7';
fo='cake.ou7';
var s:string;n:integer;
procedure doc;
var f:text;
begin
assign(f,fi);reset(f);readln(f,n);readln(f,s);close(f);
end;
procedure demdn(s:string;var sd,sn:integer);
var i:integer;
begin
sd:=0;sn:=0;
for i:=1 to length(s) do
if s[i]='D' then sd:=sd+1 else sn:=sn+1;
end;
procedure
xl;
var i, x:word;
f:text; d,c,ds,ns,ds1,ns1:integer; s1,s2:string;
begin
assign(f,fo);rewrite(f);
x:=n div 2;
if n mod 2=1 then write(f,-1)
else
begin
demdn(s,ds,ns);
if (ds mod 2=1) or (ns mod 2=1) then write(f,-1)

else
begin
for i:=1 to x do
begin
s2:=s; s1:=copy(s2,i,x); delete(s2,i,x); demdn(s1,ds1,ns1);
if (ds1=ds div 2) and (ns1=ns div 2) then
begin write(f,i,' ',i+x-1); break; end;
end;
end;
end;


close(f);
end;
begin doc; xl; end.

PASS.PAS

const
fi='pass.in7';
fo='pass.ou7';
type mmc=array[1..101] of word;
var f:text;
k:word;
a:mmc;
procedure doc;
var i:word;
begin
assign(f,fi);reset(f); readln(f,k);
for i:=1 to k do read(f,a[i]);

close(f);
end;
function ucln(a,b:word):word;
begin
while a<>b do
begin
if a>b then a:=a-b else b:=b-a;
ucln:=a;
end;
procedure xl;
var
u,i:word;
begin
u:=a[1];
for i:=2 to k do u:=ucln(u,a[i]);
assign(f,fo);rewrite(f);write(f,u);close(f);
end;
begin
doc;xl;end.

end;

LICH.PAS
const
max
= 1000;
fi
= 'Lich.in7';
fo
= 'Lich.ou7';

type m1
= array[1..2,1..max] of real;
mkq
= array[1..max] of byte;
mdx
= array[1..max] of boolean;
var a: m1;
kq
: mkq; {phuong an xep lich}
dx
: mdx; {mang danh dau chi tiet}
n
: byte;
g
: text;
lmin:real;
procedure doc_inp;
var f:text; i:integer;
begin
assign(f,fi);reset(f);
readln(f,n);
for i:=1 to n do read(f,a[1,i]);
for i:=1 to n do read(f,a[2,i]);
close(f);
end;
function chitietmin(var may: byte): byte;
var i,j,chitiet:word;
begin
lmin := maxint;
for i:=1 to 2 do

for j:=n downto 1 do
if not dx[j] then
if (a[i,j]begin may
:= i;
chitiet:= j; lmin
:= a[i,j];
chitietmin := chitiet;
end;
procedure john;
var may,chitiet,dau,cuoi: byte;

end;


begin

fillchar(dx,sizeof(dx),false);
dau := 0;
cuoi := n+1;
repeat
chitiet := chitietmin(may);
if may=1 then
begin
inc(dau); kq[dau]:= chitiet; dx[chitiet]:= true;
end
else
begin
dec(cuoi); kq[cuoi]
:= chitiet; dx[chitiet]:= true;

end;
until dau = cuoi-1;

end;
procedure hien;
var i:integer;
begin for i:=1 to n do write(g,kq[i],' ');
end;
function max2(a,b: real): real;
begin if a>b then max2:=a else max2:=b; end;
procedure tinh;
var
i,j
: byte;
t1,t2 : real;
begin
t1:=0; t2:=0;
for i:=1 to n do
begin
t1 := t1 + a[1,kq[i]]; t2 := max2(t1,t2)+a[2,kq[i]];
end;
writeln(g,t2:0:0);
end;
BEGIN doc_inp;
john;
assign(g,fo); rewrite(g); tinh; hien; close(g); END.

III/ Mét sè test gîi ý.
CAKE.PAS


CAKE.IN
10
DDSDDDSDSS
20
SSDDDDSSDSSSDSDSDDSD
30
SDSDDDDDSSSSDDDSDDDDSSDDDSSSDD
10
SSSSSSDDDD
16
DDDDDDDDDDDDDDDD
4
DSSD
4
SDDS

CAKE.OU
3 7
1 10
1 15
4 8
1 8
1 2
1 2

Gi¸m kh¶o lu ý khi sö dông c¸c test ®Ó chÊm bµi: Cã thÓ cã nhiÒu c¸ch c¾t ®óng
kh¸c nhau. Trªn ®©y chØ ®a ra mét c¸ch c¾t dóng


PASS.PAS

PASS.IN

PASS.OU
5

10
25 35 75 5 20 40 50 125 55 45
20
2
3874 33314 49912 37822 14374 39488 24048 41264 25178
52384 34534 56834 35916 28756 34526 25506 21342 61186
57498 48510
30
3
1611 9 129 9 27 195 825 54 279 192 93 552 840 2790 72 45
2808 228 99 45 225 90 903 270 621 426 2604 522 18 99
8
9
18 2160 2007 9900 3636 1278 954 5454
2
1
1 65535
10
1
1 1 1 1 1 1 1 1 1 1
10
25
25 25 25 25 25 25 25 25 25 25
LICH.PAS
LICH.IN

LICH.OU
5
26
3 4 6 5 6
1 4 2 5 3
3 3 2 7 3
10
56
3 4 6 5 6 7 6 5 4 8
1 9 8 4 7 6 10 2 5 3
3 3 2 7 3 8 7 5 7 4
15
76
3 4 6 5 6 4 6 3 2 6 7 8 7 5 3
9 8 1 6 4 10 7 11 12 2 5 13 3 14 15
3 3 2 7 3 8 7 3 2 6 7 5 3 2 1
2
4
1 2
1 2
2 1
2
5
1 2
1 2
1 2
10
46
6 5 3 4 5 4 1 6 5 6
7 3 4 10 8 5 6 9 2 1

1 2 4 5 3 3 2 7 3 8
Gi¸m kh¶o lu ý khi sö dông c¸c test ®Ó chÊm bµi
+ Tæng thêi gian Ýt nhÊt ®Ó hoµn thµnh gia c«ng N chi tiÕt ph¶i gièng ®¸p ¸n.
+ Tr×nh tù gia c«ng cã thÓ cã nhiÒu c¸ch kh¸c nhau.


Đề thi dự bị
Vòng 1

Câu 1: (3 điểm) Luỹ thừa.
Tên file bài làm: LT.PAS
n
Viết chơng trình tính 2 với n chạy từ 1 đến 96. Kết quả đặt trong file LT.TXT có
cấu trúc nh sau:
N dòng: Dòng thứ i ghi giá trị tính đợc của 2i
Câu 2: (3.5 điểm) Hoán vị nhỏ nhất.
Tên file bài làm: PER.PAS
Cho a là một hoán vị của các số tự nhiên 1..N (3<=N<=50). Tìm hoán vị nhỏ
nhất b của 1..N thoả mãn điều kiện: Độ lệch của các phần tử tơng ứng giữa a và b là
không quá 1 đơn vị.
Dữ liệu vào: Cho trong file PER.INP có cấu trúc nh sau:
Dòng 1: Ghi số N.
Dòng 2: Ghi N số xi (1<=xi<=N) là hoán vị của các số tự nhiên từ 1 đến N. Các số ghi
cách nhau ít nhất một dấu cách.
Dữ liệu ra: Ghi ra file PER.OUT theo cấu trúc nh sau:
Dòng 1: Ghi N số yi (1<=yi<=N) là hoán vị nhỏ nhất b tìm đợc. Các số ghi cách nhau
ít nhất một dấu cách.
Ví dụ
PER.INP
PER.OUT

8
6 4 7 8 5 1 2 3
7 5 6 8 4 1 3 2
Câu 3: (3.5 điểm)
Mã Gray.
Tên file bài làm: GRAY.PAS
Mã Gray G(N) của một số tự nhiên N là một số tự nhiên P đợc xác định nh sau:
-Viết N dới dạng nhị phân C.
-Dịch C sang phải 1 bít. (Bỏ bít đầu phải, thêm bít 0 vào đầu trái).
-Gọi số thu đợc là D.
-Thực hiện phép XOR theo bít giữa C và D để thu đợc số nhị phân K.
-Chuyển K sang dạng thập phân để thu đợc số P.
Khi đó ta có: G(N)=P
(Phép XOR giữa hai bít a và b cho ta giá trị 0 nếu 2 bít giống nhau, cho ta giá trị 1
nếu 2 bít khác nhau)
Yêu cầu: Tính N khi biết P. (0<=P<=2000000000)
Dữ liệu vào: Cho trong file GRAY.INP có cấu trúc nh sau:
Dòng 1: Ghi số P.
Dữ liệu ra: Ghi ra file GRAY.OUT theo cấu trúc nh sau:
Dòng 1: Ghi số N.
Ví dụ
GRAY.INP
GRAY.OUT
4
7


Vòng 2

Câu 1: (5 điểm) Sắp đôi.

Tên file bài làm: PAR.PAS
Cho hai dãy số nguyên dơng a1, a2,...an và b1, b2,...bn
(0liền nhau (ai,bi) và (aj,bj) ta luôn có: Min{(bi ,aj )}>= min {(bj ,ai )}
Dữ liệu vào: Cho trong file PAR.INP có cấu trúc nh sau:
Dòng 1: Ghi số n.
Dòng 2: Ghi n số ai của dãy thứ nhất. Các số ghi cách nhau ít nhất một dấu cách.
Dòng 2: Ghi n số bi của dãy thứ hai. Các số ghi cách nhau ít nhất một dấu cách.
Dữ liệu ra: Ghi ra file PAR.OUT theo cấu trúc nh sau:
Dòng 1: Ghi n số là chỉ số của các cặp theo thứ tự sau khi sắp.
PAR.INP
PAR.OUT
4
1342
3 4 8 10
6 2 9 15
Chú ý: Có thể có nhiều cách sắp xếp, chỉ cần đa ra một cách sắp đúng.
Câu 2: (5 điểm) Nghịch thế.
Tên file bài làm: NTHE.PAS
Giả sử P=(p1,p2,...,pn) là một hoán vị của 1,2,..,n. Bảng nghịch thế của hoán vị P
là dãy T=(t1,t2,...,tn) trong đó ti là số các phần tử của hoán vị P đứng bên trái i và lớn hơn
i.
Yêu cầu: Cho bảng nghịch thế T, hãy xây dựng lại hoán vị P tơng ứng.
Dữ liệu vào: Cho trong file NTHE.INP có cấu trúc nh sau:
Dòng 1: Ghi số n (n<1001)
Dòng 2: Ghi n số nguyên ti là bảng nghịch thế của hoán vị P.
Dữ liệu ra: Ghi ra file NTHE.OUT có cấu trúc nh sau:
Dòng 1: Ghi n số nguyên pi là hoán vị P tơng ứng tìm đợc.
Ví dụ:
NTHE.INP

2 3 6 4 0 2 2 1 0

NTHE.OUT
5 9 1 8 2 6 4 7 3

Câu 3: (3.5 điểm) Thời điểm gặp mặt.
Tên file bài làm: MEETING.PAS
Một nhóm gồm N học sinh (N nguyên dơng, N < 1001) tham gia một câu lạc bộ
Tin học. Biết thời gian mà học sinh i có mặt tại câu lạc bộ là [a i , bi] (ai < bi; 0<= ai , bi
<=32767). Cô giáo chủ nhiệm câu lạc bộ muốn tới thăm các học sinh trong nhóm. Hãy


giúp cô giáo chủ nhiệm xác định thời điểm đến câu lạc bộ để gặp đợc nhiều học sinh
trong nhóm nhất.
Dữ liệu vào: Cho trong file MEETING.INP có cấu trúc nh sau:
Dòng 1: Ghi số N là số lợng học sinh trong nhóm.
N dòng tiếp theo: Mỗi dòng ghi 2 số nguyên không âm a i bi cách nhau ít nhất một dấu
cách.
Dữ liệu ra: Ghi ra file MEETING.OUT theo cấu trúc nh sau:
Dòng 1: Ghi số nguyên dơng K là số lợng học sinh có mặt tại câu lạc bộ khi cô đến.
K dòng tiếp theo: Mỗi dòng ghi chỉ số của 1 học sinh có mặt tại câu lạc bộ khi cô đến.
Ví dụ:
MEETING.INP MEETING.OUT MEETING.INP MEETING.OUT
6
3
5
1
1 2
1
1 2

1
2 3
2
3 5
2 5
3
7 9
5 7
11 15
6 7
17 21
9 11
151
51515151515151515151515151515151515151515151515151515151515151515151515
15151515151515151515151515151515151515151515151515151515151515151515151
5151515151515