o Olympic tin học Việt Nam
Tuyển tập đề thi tin học quốc gia
(2005-2008)
o Olympic tin học Việt Nam
Đề thi vòng I quốc gia
o Olympic tin học Việt Nam
Năm 2005
Bảng A
Bài 1. Phân đoạn
Tên file chương trình: SEGPAR.PAS
Cho dãy số nguyên a
1
, a
2
, …, a
n
và số nguyên dương k. Ta gọi k-phân đoạn của dãy số đã cho là cách
chia dãy số đã cho ra thành k đoạn, mỗi đoạn là một dãy con gồm các phần tử liên tiếp của dãy. Chính
xác hơn, một k-phân đoạn được xác định bởi dãy chỉ số
nnnn
k
=<<<≤ ...1
21
.
Đoạn thứ i là dãy con
kiaaa
iii
nnn
,...,2,1,,...,,
21
11
=
++
−−
. Ở đây quy ước .0
0
=n
Yêu cầu: Hãy xác định số M nhỏ nhất để tồn tại k-phân đoạn sao cho tổng các phần tử trong mỗi đoạn
đều không vượt quá M.
Dữ liệu: Vào từ file văn bản SEGPAR.INP.
• Dòng đầu tiên chứa hai số nguyên n và k (1≤ k ≤ n ≤ 15000);
• Dòng thứ i trong số n dòng tiếp theo chứa số nguyên a
i
(|a
i
| ≤ 30000), i =1, 2, …, n.
Các số cạnh nhau trên một dòng trong file dữ liệu cách nhau ít nhất một dấu cách.
Kết quả: Ghi ra file SEGPAR.OUT một số nguyên duy nhất là giá trị M tìm được.
Ví dụ:
SEGPAR.INP SEGPAR.OUT
5 9 4
1
1
1
3
2
2
1
3
1
o Olympic tin học Việt Nam
Bài 2: Pháo hoa
Tên chương trình: FIREWK.PAS
Nhằm chào mừng các ngày lễ lớn trong năm 2005 người ta đã chế tạo một loại đạn pháo hoa mới, khi
bắn, đạn nổ thành bông hoa 2n cánh màu ( 1 ≤ n ≤ 30). Nguyên vật liệu cho phép tạo được m màu khác
nhau, đánh số từ 1 đến m (2 ≤ m ≤ 32).
Để đảm bảo tính mỹ thuật, việc chuyển tiếp màu giữa 2 cánh hoa kề nhau phải tuân theo quy tắc
chuyển màu cầu vồng sau đây:
• Bên cạnh cánh hoa màu i phải là cánh hoa màu i-1 hoặc i+1, với 1 < i < m,
• Bên cạnh cánh hoa màu 1 chỉ có thể là cánh hoa màu 2,
• Bên cạnh cánh hoa màu m chỉ có thể là cánh hoa màu m-1.
Một bông hoa không nhất thiết phải có đầy đủ m màu. Mỗi bông hoa tương ứng với một vòng tròn 2n
số thể hiện màu của các cánh hoa. Ví dụ, hình 1 là bông hoa 24 cánh (n = 12) và hình 2 là vòng tròn số
tương ứng với nó. Mỗi bông hoa được mô tả bằng dãy 2n số nguyên liệt kê các chỉ số màu của các
cánh hoa theo chiều kim đồng hồ. Ví dụ, bông hoa ở hình 1 có thể được mô tả bằng dãy số
3 4 3 2 1 2 3 4 3 2 1 2 3 4 3 2 1 2 3 4 3 4 3 2.
Dãy có thứ tự từ điển nhỏ nhất trong các dãy có thể dùng để mô tả hoa được gọi là mã hoa. Khi đó, mã
hoa của bông hoa ở hình 1 sẽ là
1 2 3 4 3 2 1 2 3 4 3 2 1 2 3 4 3 4 3 2 3 4 3 2.
Trong các ngày lễ, Ban tổ chức yêu cầu bắn các đạn pháo hoa 2n cánh có đúng k cánh màu C (0 ≤ k ≤
2). Các mã hoa thỏa mãn yêu cầu vừa nêu cũng được sắp xếp theo thứ tự từ điển và đánh số bắt đầu từ
1. Hơn nữa, nhằm tạo ra các hoa không giống nhau, đội bắn pháo hoa cần đảm bảo hai viên đạn pháo
hoa bắn liên tiếp phải có mã khác nhau. Do vậy, người ta đã thiết kế một Hệ thống chụp ảnh và phân
tích tự động để báo cho đội bắn pháo hoa biết số thứ tự của viên đạn pháo hoa vừa nổ trên trời. Em
được giao viết chương trình giải quyết nhiệm vụ chính trong phần mềm phân tích tự động này.
Yêu cầu: Cho biết n, m, k và C. Gọi X là tập tất cả các mã hoa 2n cánh có đúng k cánh màu C.
• Hãy xác định số lượng p các phần tử của X;
• Cho một mã hoa nào đó trong tập X. Hãy xác định số thứ tự từ điển của nó trong X.
Dữ liệu: Vào từ file văn bản FIREWK.INP. Dòng đầu tiên chứa 4 số nguyên n, m, k, C; dòng tiếp theo
chứa 2n số nguyên mô tả một mã hoa.
Các số trên một dòng của file dữ liệu cách nhau ít nhất một dấu cách.
Kết quả: Đưa ra file văn bản FIREWK.OUT. Dòng đầu tiên ghi số nguyên p; dòng tiếp theo ghi số
thứ tự tìm được của mã hoa.
Ví d
ụ:
FIREWK.INP FIREWK.OUT
3 4 0 1
2 3 4 3 4 3
4
3
o Olympic tin học Việt Nam
Bài 3. Bộ sưu tập
Tên chương trình: COLLECT.PAS
Một bộ sưu tập tiền xu cổ được coi là có giá trị phải gồm không ít hơn
0
Z đồng tiền vàng,
0
S đồng tiền
bạc và
0
M đồng tiền đồng. Bộ sưu tập ban đầu của Alibaba có một số lượng nhất định các đồng tiền vàng,
bạc và đồng nhưng chưa phải là một bộ sưu tập có giá trị. Tại Trụ sở của Hiệp hội những người sưu tầm
tiền cổ có đặt một máy đổi tiền để giúp hội viên đổi được các bộ sưu tập có giá trị. Tuy nhiên, máy đổi chỉ
hỗ trợ việc đổi tiền trọn gói theo quy tắc đổi gói (
111
,, MSZ
) lấy gói (
222
,, MSZ
) đồng tiền. Các quy tắc
đổi tiền khác nhau từng đôi một, được gán số hiệu tuần tự 1,2,3, . . . và được công bố trước. Hội viên
có thể tạo gói tiền thích hợp từ bộ sưu tập của mình để thực hiện việc đổi tiền. Các đồng tiền nhận
được sau mỗi lần đổi được gộp lại với các đồng tiền mà hội viên đang có để thành một bộ sưu tập mới
và có thể được sử dụng để đổi trong những lần sau nếu cần. Số lần đổi không hạn chế, tuy nhiên, là
người thực dụng, Alibaba luôn cố gắng giảm tới mức tối đa số lần đổi tiền. Mặt khác, để ngăn chặn
việc đầu cơ, Hiệp hội quy định, trong mọi thời điểm, mỗi hội viên không được giữ quá 4 đồng tiền mỗi
loại và không được phép đổi tiếp khi đã đổi được một bộ sưu tập có giá trị.
Yêu cầu: Cho biết số lượng
MSZ ,, các
đồ
ng ti
ề
n vàng, b
ạ
c,
đồ
ng mà Alibaba có ban
đầ
u và các quy
t
ắ
c
đổ
i ti
ề
n. Hãy ch
ỉ
ra t
ấ
t c
ả
các b
ộ
s
ư
u t
ậ
p ti
ề
n c
ổ
có giá tr
ị
mà Alibaba có th
ể
có
đượ
c sau m
ộ
t s
ố
l
ầ
n
đổ
i không v
ượ
t quá k cho tr
ướ
c.
Dữ liệu
: Vào t
ừ
file v
ă
n b
ả
n COLLECT.INP.
•
Dòng
đầ
u ghi s
ố
nguyên d
ươ
ng )1000( ≤kk ; dòng th
ứ
2 ghi 6 s
ố
nguyên không âm
)4,,,,,0(,,,,,
000000
≤≤ MSZMSZMSZMSZ ;
•
Các dòng ti
ế
p theo m
ỗ
i dòng ghi 6 s
ố
nguyên không âm
222111
,,,,, MSZMSZ
xác
đị
nh m
ộ
t quy
t
ắ
c
đổ
i ti
ề
n (
4,,,,,0
212121
≤≤ MMSSZZ
).
Kết quả:
Đư
a ra file v
ă
n b
ả
n COLLECT.OUT. N
ế
u không t
ồ
n t
ạ
i cách
đổ
i
để
có
đượ
c b
ộ
s
ư
u t
ậ
p có
giá tr
ị
, file k
ế
t qu
ả
ch
ỉ
g
ồ
m m
ộ
t s
ố
-1. Trong tr
ườ
ng h
ợ
p ng
ượ
c l
ạ
i, dòng
đầ
u ghi s
ố
v là s
ố
các b
ộ
ti
ề
n
c
ổ
có giá tr
ị
mà Alibaba có th
ể
đổ
i
đượ
c. Dòng th
ứ
i trong v dòng ti
ế
p theo ghi 4 s
ố
nguyên
iiii
kMSZ ,,, mô t
ả
b
ộ
s
ư
u t
ậ
p có giá tr
ị
th
ứ
i và s
ố
l
ầ
n
đổ
i
i
k ít nh
ấ
t không v
ượ
t quá k c
ầ
n th
ự
c hi
ệ
n
để
có
đượ
c b
ộ
s
ư
u t
ậ
p
ấ
y.
Các s
ố
trên m
ộ
t dòng c
ủ
a file d
ữ
li
ệ
u và file k
ế
t qu
ả
đặ
t cách nhau ít nh
ấ
t m
ộ
t d
ấ
u cách.
Ví dụ
:
COLLECT.INP COLLECT.OUT
1
3 3 3 1
2
4 0 1 3 3 3
1 0 1 1 1 1
2 0 1 1 3 3
o Olympic tin h
ọ
c Vi
ệ
t Nam
Bài 4. Khuôn thép
Tên chương trình: STEEL.PAS
Để
chu
N
n b
ị
cho L
ễ
h
ộ
i k
ỷ
ni
ệ
m 30 n
ă
m ngày Chi
ế
n d
ị
ch H
ồ
Chí Minh toàn th
ắ
ng, gi
ả
i phóng mi
ề
n
Nam, th
ố
ng nh
ấ
t
đấ
t n
ướ
c, ng
ườ
i ta c
ầ
n gia công các lo
ạ
i khuôn thép có hình d
ạ
ng là các hình
đ
a giác
l
ồ
i
M
đỉ
nh. M
ỗ
i khuôn thép
đượ
c thi
ế
t k
ế
trên m
ộ
t t
ấ
m thép c
ũ
ng có hình d
ạ
ng là m
ộ
t hình
đ
a giác l
ồ
i
N
đỉ
nh, không có c
ạ
nh nào c
ủ
a khuôn thép n
ằ
m g
ọ
n trên m
ộ
t c
ạ
nh c
ủ
a t
ấ
m thép.
Để
ti
ệ
n cho vi
ệ
c gia
công, khuôn thép
đượ
c v
ẽ
sao cho hai
đườ
ng th
ẳ
ng ch
ứ
a hai c
ạ
nh không k
ề
nhau c
ủ
a nó không c
ắ
t
nhau
ở
bên trong t
ấ
m thép.
Công vi
ệ
c chính c
ầ
n làm trong quá trình gia công là s
ử
d
ụ
ng máy c
ắ
t
để
c
ắ
t
đượ
c khuôn thép t
ừ
t
ấ
m
thép ra. Rõ ràng là c
ầ
n ph
ả
i th
ự
c hi
ệ
n
M
nhát c
ắ
t. M
ỗ
i nhát c
ắ
t
đượ
c th
ự
c hi
ệ
n b
ằ
ng cách ch
ọ
n m
ộ
t
c
ạ
nh nào
đ
ó c
ủ
a khuôn thép và c
ắ
t theo
đườ
ng th
ẳ
ng ch
ứ
a c
ạ
nh
ấ
y chia t
ấ
m thép thành hai ph
ầ
n, m
ộ
t
ph
ầ
n ch
ứ
a khuôn thép c
ầ
n gia công. Chi phí c
ắ
t khuôn thép là t
ổ
ng chi
ề
u dài c
ủ
a các
đườ
ng c
ắ
t.
Trên hình 1 và 2, t
ấ
m thép là t
ứ
giác
đượ
c tô nh
ạ
t, khuôn thép là hình vuông
đượ
c tô b
ằ
ng các g
ạ
ch
đậ
m. Các nét g
ạ
ch
đứ
t là các
đườ
ng c
ắ
t v
ớ
i t
ổ
ng chi phí b
ằ
ng 6.5
đơ
n v
ị
.
Yêu cầu:
Cho bi
ế
t hình d
ạ
ng t
ấ
m thép và khuôn thép c
ầ
n gia công. Hãy tìm ph
ươ
ng án c
ắ
t khuôn thép
có chi phí nh
ỏ
nh
ấ
t.
Dữ liệu:
Vào t
ừ
file v
ă
n b
ả
n STEEL.INP: Dòng
đầ
u ghi s
ố
(3 2000)
N N
≤ ≤ là s
ố
đỉ
nh c
ủ
a t
ấ
m
thép;
N
dòng ti
ế
p theo, m
ỗ
i dòng ghi 2 s
ố
th
ự
c
x
và
y
4 4
( 10 , 10 )
x y
− < < , là to
ạ
độ
N
đỉ
nh c
ủ
a t
ấ
m
thép
đượ
c li
ệ
t kê theo chi
ề
u kim
đồ
ng h
ồ
b
ắ
t
đầ
u t
ừ
m
ộ
t
đỉ
nh nào
đ
ó; dòng ti
ế
p theo ghi s
ố
(3 2000)
M M
≤ ≤ là s
ố
đỉ
nh c
ủ
a khuôn thép; cu
ố
i cùng là
M
dòng, m
ỗ
i dòng ghi 2 s
ố
th
ự
c
x
và
y
4 4
( 10 , 10 )
x y
− < < là to
ạ
độ
M
đỉ
nh c
ủ
a khuôn thép
đượ
c li
ệ
t kê theo chi
ề
u kim
đồ
ng h
ồ
b
ắ
t
đầ
u t
ừ
m
ộ
t
đỉ
nh nào
đ
ó. Các s
ố
trên m
ộ
t dòng cách nhau ít nh
ấ
t m
ộ
t d
ấ
u cách.
Kết quả:
Đư
a ra file v
ă
n b
ả
n STEEL.OUT chi phí nh
ỏ
nh
ấ
t tìm
đượ
c v
ớ
i
độ
chính xác t
ớ
i 4 ch
ữ
s
ố
sau
d
ấ
u ch
ấ
m th
ậ
p phân.
Ví dụ:
STEEL.INP STEEL.OUT
4 6.5000
2 1
2 5
5 3.5
5 2
4
3 3
3 4
4 4
4 3
o Olympic tin h
ọ
c Vi
ệ
t Nam
Bảng B
Bài 1. Đóng gói sản phm
Tên file chương trình: ZXY.PAS
Ở
đầ
u ra c
ủ
a m
ộ
t dây chuy
ề
n s
ả
n xu
ấ
t trong nhà máy ZXY có m
ộ
t máy x
ế
p t
ự
độ
ng. Sau khi k
ế
t thúc
vi
ệ
c gia công trên dây chuy
ề
n, các s
ả
n ph
N
m s
ẽ
đượ
c x
ế
p vào các h
ộ
p có cùng dung l
ượ
ng
M
. S
ả
n
ph
N
m r
ờ
i kh
ỏ
i dây chuy
ề
n
đượ
c x
ế
p vào h
ộ
p
đ
ang m
ở
(khi b
ắ
t
đầ
u ca làm vi
ệ
c có m
ộ
t h
ộ
p r
ỗ
ng
đượ
c
m
ở
s
ẵ
n) n
ế
u nh
ư
dung l
ượ
ng c
ủ
a h
ộ
p còn
đủ
để
ch
ứ
a s
ả
n ph
N
m. Trong tr
ườ
ng h
ợ
p ng
ượ
c l
ạ
i, máy s
ẽ
t
ự
độ
ng
đ
óng n
ắ
p h
ộ
p hi
ệ
n t
ạ
i, cho xu
ấ
t x
ưở
ng r
ồ
i m
ở
m
ộ
t h
ộ
p r
ỗ
ng m
ớ
i
để
x
ế
p s
ả
n ph
N
m vào. Trong
m
ộ
t ca làm vi
ệ
c có
n
s
ả
n ph
N
m
đ
ánh s
ố
t
ừ
1
đế
n
n
theo
đ
úng th
ứ
t
ự
mà chúng r
ờ
i kh
ỏ
i dây chuy
ề
n. S
ả
n
ph
N
m th
ứ
i
có tr
ọ
ng l
ượ
ng là
a
i
, i
= 1, 2, …,
n
. Ban Giám
đố
c nhà máy qui
đị
nh r
ằ
ng s
ả
n ph
N
m xu
ấ
t
x
ưở
ng c
ủ
a m
ỗ
i ca làm vi
ệ
c ph
ả
i
đượ
c x
ế
p vào trong không quá
k
h
ộ
p.
Yêu cầu:
Hãy giúp ng
ườ
i qu
ả
n
đố
c c
ủ
a ca làm vi
ệ
c xác
đị
nh giá tr
ị
M
nh
ỏ
nh
ấ
t sao cho s
ố
h
ộ
p mà
máy t
ự
độ
ng c
ầ
n s
ử
d
ụ
ng
để
x
ế
p dãy
n
s
ả
n ph
N
m xu
ấ
t x
ưở
ng c
ủ
a ca không v
ượ
t quá s
ố
k
cho tr
ướ
c.
Dữ liệu:
Vào t
ừ
file v
ă
n b
ả
n ZXY.INP:
•
Dòng
đầ
u tiên ch
ứ
a hai s
ố
nguyên
n
và
k
, (1
≤
k
≤
n
≤
15000);
•
Dòng th
ứ
i
trong
n
dòng ti
ế
p theo ch
ứ
a s
ố
nguyên d
ươ
ng
a
i
(
a
i
≤
30000),
i
=1, 2, …,
n
.
Các s
ố
trên m
ộ
t dòng cách nhau ít nh
ấ
t m
ộ
t d
ấ
u cách.
Kết quả:
Ghi ra file ZXY.OUT m
ộ
t s
ố
nguyên duy nh
ấ
t là dung l
ượ
ng c
ủ
a h
ộ
p.
Ví dụ:
ZXY.INP ZXY.OUT
9 4
1
1
1
3
2
2
1
3
1
5
o Olympic tin h
ọ
c Vi
ệ
t Nam
Bài 2. Chữ số
Tên chương trình: DIGIT.PAS
Cho xâu M không quá 127 ký t
ự
l
ấ
y t
ừ
t
ậ
p
F
= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}và không
b
ắ
t
đầ
u b
ằ
ng ký t
ự
0. G
ọ
i S là xâu v
ớ
i giá tr
ị
ban
đầ
u là xâu M.
Ng
ườ
i ta bi
ế
n
đổ
i M theo quy t
ắ
c sau:
đế
m s
ố
l
ầ
n xu
ấ
t hi
ệ
n các ký t
ự
0, 1, 2, . . . , F, g
ọ
i K
i
là s
ố
l
ầ
n
xu
ấ
t hi
ệ
n ký t
ự
i
(v
ớ
i
i
l
ầ
n l
ượ
t là 0, 1, 2, . . . F). V
ớ
i các K
i
≠ 0 ng
ườ
i ta vi
ế
t liên ti
ế
p xâu bi
ể
u di
ễ
n s
ố
K
i
trong c
ơ
s
ố
16 và ký t
ự
i
. Xâu k
ế
t qu
ả
thu
đượ
c là giá tr
ị
m
ớ
i c
ủ
a M. Sau m
ỗ
i l
ầ
n bi
ế
n
đổ
i ng
ườ
i ta
l
ạ
i vi
ế
t ti
ế
p M vào sau S.
Ví d
ụ
, v
ớ
i M = '150A', S nh
ậ
n giá tr
ị
ban
đầ
u là '150A'.
Sau l
ầ
n bi
ế
n
đổ
i th
ứ
nh
ấ
t ta có M là '1011151A' và S ='150A1011151A'.
Sau l
ầ
n bi
ế
n
đổ
i th
ứ
2 ta có M là '1051151A' và S ='150A1011151A1051151A'.
Sau l
ầ
n bi
ế
n
đổ
i th
ứ
3 ta có M là '1041251A' và S = ‘150A1011151A1051151A1041251A’.
Yêu cầu:
Cho xâu M, s
ố
l
ầ
n bi
ế
n
đổ
i L ( 0
≤
L
≤
10
7
) và X là m
ộ
t ký t
ự
t
ừ
t
ậ
p
F
. Hãy
đế
m s
ố
l
ầ
n xu
ấ
t
hi
ệ
n X trong S thu
đượ
c sau L l
ầ
n bi
ế
n
đổ
i M.
Dữ liệu
: Vào t
ừ
file v
ă
n b
ả
n DIGIT.INP :
•
Dòng th
ứ
nh
ấ
t ch
ứ
a xâu M,
•
Dòng th
ứ
2 ch
ứ
a s
ố
nguyên L
•
Dòng th
ứ
3 ch
ứ
a ký t
ự
X.
Kết quả
:
Đư
a ra file v
ă
n b
ả
n DIGIT.OUT m
ộ
t s
ố
nguyên - s
ố
l
ầ
n xu
ấ
t hi
ệ
n X.
Ví dụ
:
DIGIT.INP DIGIT.OUT
1 150A
3
2
o Olympic tin h
ọ
c Vi
ệ
t Nam
Bài 3. Đổi đất
Tên file chương trình: LAND.PAS
Hai b
ộ
l
ạ
c Anpha và Bêta s
ố
ng r
ấ
t hoà thu
ậ
n v
ớ
i nhau. M
ộ
t ph
ầ
n ranh gi
ớ
i c
ủ
a hai b
ộ
l
ạ
c là m
ộ
t
đườ
ng
g
ấ
p khúc không t
ự
c
ắ
t.
Đườ
ng g
ấ
p khúc nh
ậ
n
đượ
c b
ằ
ng cách l
ầ
n l
ượ
t n
ố
i
N
đ
i
ể
m
đ
ôi m
ộ
t khác nhau
1 2
, ,...,
N
A A A
.
Đ
i
ể
m
i
A
đượ
c xác
đị
nh b
ở
i hoành
độ
i
x
và tung
độ
i
y
(
i
x
là các s
ố
nguyên tho
ả
mãn
đ
i
ề
u ki
ệ
n:
1i i
x x
+
≤ ). Ph
ầ
n
đấ
t c
ủ
a b
ộ
l
ạ
c Anpha n
ằ
m
ở
phía trên
đườ
ng g
ấ
p khúc.
Nhân d
ị
p n
ă
m m
ớ
i, tù tr
ưở
ng hai b
ộ
l
ạ
c quy
ế
t
đị
nh thay
đổ
i
đườ
ng ranh gi
ớ
i c
ũ
b
ằ
ng cách xây d
ự
ng m
ộ
t
đườ
ng cao t
ố
c là
đườ
ng n
ố
i th
ẳ
ng t
ừ
1
A
t
ớ
i
N
A
và l
ấ
y
đườ
ng cao t
ố
c này
làm
ranh gi
ớ
i m
ớ
i. D
ĩ
nhiên, s
ự
thay
đổ
i này s
ẽ
chuy
ể
n m
ộ
t s
ố
ph
ầ
n
đấ
t c
ủ
a b
ộ
l
ạ
c Anpha cho b
ộ
l
ạ
c Bêta và ng
ượ
c l
ạ
i. Hai tù
tr
ưở
ng tho
ả
thu
ậ
n ph
ầ
n di
ệ
n tích chênh l
ệ
ch do vi
ệ
c thay
đổ
i
đườ
ng ranh gi
ớ
i s
ẽ
đượ
c
đ
i
ề
u ch
ỉ
nh trong t
ươ
ng lai b
ằ
ng m
ộ
t
cách khác.
Yêu cầu
: Hãy tính di
ệ
n tích ph
ầ
n
đấ
t
SA
c
ủ
a b
ộ
l
ạ
c
Anpha
tr
ở
thành
đấ
t c
ủ
a b
ộ
l
ạ
c Bêta và di
ệ
n tích ph
ầ
n
đấ
t
SB
c
ủ
a b
ộ
l
ạ
c Bêta tr
ở
thành
đấ
t c
ủ
a b
ộ
l
ạ
c Anpha sau
khi
thay
đổ
i
đườ
ng ranh gi
ớ
i gi
ữ
a hai b
ộ
l
ạ
c.
Dữ liệu
: Vào t
ừ
file v
ă
n b
ả
n LAND.INP trong
đ
ó :
Dòng
đầ
u ch
ứ
a s
ố
( 10000)
N N
≤ ;
Dòng th
ứ
i
trong
N
dòng ti
ế
p theo ch
ứ
a hai s
ố
nguyên
i
x
và
i
y
đặ
t cách nhau ít nh
ấ
t 1 d
ấ
u
cách ( 32000 , 32000)
i i
x y
− ≤ ≤ .
Kết quả
:
Đư
a ra file v
ă
n b
ả
n LAND.OUT trong
đ
ó dòng th
ứ
nh
ấ
t ch
ứ
a
SA
, dòng th
ứ
hai ch
ứ
a
SB
.
K
ế
t qu
ả
đượ
c l
ấ
y chính xác v
ớ
i 4 ch
ữ
s
ố
sau d
ấ
u ch
ấ
m th
ậ
p phân.
Ví dụ :
LAND.INP LAND.OUT
6
0 0
2 4
5 1
7 11
10 8
11 11
8.0000
9.0000
o Olympic tin h
ọ
c Vi
ệ
t Nam
Bài 4. Bộ sưu tập
Tên chương trình: COLLECT.PAS
M
ộ
t b
ộ
s
ư
u t
ậ
p ti
ề
n xu c
ổ
đượ
c coi là có giá tr
ị
ph
ả
i g
ồ
m không ít h
ơ
n
0
Z
đồ
ng ti
ề
n vàng,
0
S
đồ
ng ti
ề
n
b
ạ
c và
0
M
đồ
ng ti
ề
n
đồ
ng. B
ộ
s
ư
u t
ậ
p ban
đầ
u c
ủ
a Alibaba có m
ộ
t s
ố
l
ượ
ng nh
ấ
t
đị
nh các
đồ
ng ti
ề
n vàng,
b
ạ
c và
đồ
ng nh
ư
ng ch
ư
a ph
ả
i là m
ộ
t b
ộ
s
ư
u t
ậ
p có giá tr
ị
. T
ạ
i Tr
ụ
s
ở
c
ủ
a Hi
ệ
p h
ộ
i nh
ữ
ng ng
ườ
i s
ư
u t
ầ
m
ti
ề
n c
ổ
có
đặ
t m
ộ
t máy
đổ
i ti
ề
n
để
giúp h
ộ
i viên
đổ
i
đượ
c các b
ộ
s
ư
u t
ậ
p có giá tr
ị
. Tuy nhiên, máy
đổ
i ch
ỉ
h
ỗ
tr
ợ
vi
ệ
c
đổ
i ti
ề
n tr
ọ
n gói theo quy t
ắ
c
đổ
i gói (
111
,, MSZ
) l
ấ
y gói (
222
,, MSZ
)
đồ
ng ti
ề
n. Các quy t
ắ
c
đổ
i ti
ề
n khác nhau t
ừ
ng
đ
ôi m
ộ
t,
đượ
c gán s
ố
hi
ệ
u tu
ầ
n t
ự
1,2,3, . . . và
đượ
c công b
ố
tr
ướ
c. H
ộ
i viên
có th
ể
t
ạ
o gói ti
ề
n thích h
ợ
p t
ừ
b
ộ
s
ư
u t
ậ
p c
ủ
a mình
để
th
ự
c hi
ệ
n vi
ệ
c
đổ
i ti
ề
n. S
ố
l
ầ
n
đổ
i ti
ề
n là không
h
ạ
n ch
ế
, tuy nhiên,
để
ng
ă
n ch
ặ
n vi
ệ
c
đầ
u c
ơ
, Hi
ệ
p h
ộ
i quy
đị
nh m
ỗ
i h
ộ
i viên không
đượ
c gi
ữ
quá 4
đồ
ng ti
ề
n m
ỗ
i lo
ạ
i. Các
đồ
ng ti
ề
n nh
ậ
n
đượ
c sau m
ỗ
i l
ầ
n
đổ
i
đượ
c g
ộ
p l
ạ
i v
ớ
i các
đồ
ng ti
ề
n mà h
ộ
i
viên
đ
ang có
để
thành
m
ộ
t b
ộ
s
ư
u t
ậ
p m
ớ
i
và có th
ể
đượ
c s
ử
d
ụ
ng
để
đổ
i trong nh
ữ
ng l
ầ
n sau n
ế
u c
ầ
n.
Yêu cầu
: Cho bi
ế
t s
ố
l
ượ
ng
MSZ
,, các
đồ
ng ti
ề
n vàng, b
ạ
c,
đồ
ng mà Alibaba có ban
đầ
u và các quy
t
ắ
c
đổ
i ti
ề
n. Hãy ch
ỉ
ra
m
ộ
t ph
ươ
ng án
đổ
i ti
ề
n nào
đ
ó
để
Alibaba có
đượ
c b
ộ
s
ư
u t
ậ
p có giá tr
ị
. D
ữ
li
ệ
u vào
đả
m b
ả
o luôn có ph
ươ
ng án.
Dữ liệu
: Vào t
ừ
file v
ă
n b
ả
n COLLECT.INP:
•
Dòng
đầ
u ghi 6 s
ố
nguyên không âm )4,,,,,0(,,,,,
000000
≤≤
MSZMSZMSZMSZ
;
•
Các dòng ti
ế
p theo m
ỗ
i dòng ghi 6 s
ố
nguyên không âm
222111
MSZMSZ
xác
đị
nh m
ộ
t quy t
ắ
c
đổ
i
ti
ề
n.
Kết quả:
Đư
a ra file v
ă
n b
ả
n COLLECT.OUT m
ộ
t dòng ghi dãy s
ố
hi
ệ
u các quy t
ắ
c theo th
ứ
t
ự
đ
ã s
ử
d
ụ
ng trong ph
ươ
ng án
đổ
i ti
ề
n.
Các s
ố
trên m
ộ
t dòng c
ủ
a file d
ữ
li
ệ
u và file k
ế
t qu
ả
đặ
t cách nhau ít nh
ấ
t m
ộ
t d
ấ
u cách.
Ví dụ
:
COLLECT.INP COLLECT.OUT
3 4 4 0 1 3 3 3
1 0 1 0 2 2
0 1 1 0 0 3
2 0 1 1 2 3
1 0 0 1 1 0
o Olympic tin h
ọ
c Vi
ệ
t Nam
Năm 2006
Bảng A
Bài 1. Dãy con dài nhất
Cho dãy s
ố
nguyên
a
1
,
a
2
, ...,
a
n
.
Dãy s
ố
a
i
, a
i+1
, ...,
a
j
v
ớ
i 1≤
i
≤
j
≤
n
đượ
c g
ọ
i là dãy con c
ủ
a dãy s
ố
đ
ã cho và khi
đ
ó,
j
-
i
+1
đượ
c g
ọ
i là
độ dài,
còn
j
k
k i
a
=
∑
đượ
c g
ọ
i là
trọng lượng
c
ủ
a dãy con này.
Yêu cầu:
Cho s
ố
nguyên
p
, trong s
ố
các dãy con c
ủ
a dãy s
ố
đ
ã cho có tr
ọ
ng l
ượ
ng không nh
ỏ
h
ơ
n
p
hãy tìm dãy con có
độ
dài l
ớ
n nh
ấ
t.
Dữ liệu:
Vào t
ừ
file v
ă
n b
ả
n MAXSEQ.INP:
•
Dòng
đầ
u tiên ghi hai s
ố
nguyên
n
và
p
cách nhau b
ở
i d
ấ
u cách;
•
Dòng th
ứ
i
trong s
ố
n
dòng ti
ế
p theo ch
ứ
a s
ố
nguyên
a
i
là s
ố
h
ạ
ng th
ứ
i
c
ủ
a dãy s
ố
đ
ã cho,
i
=
1, 2, ...,
n
.
Kết quả:
Ghi ra file v
ă
n b
ả
n MAXSEQ.OUT s
ố
nguyên
k
là
độ
dài c
ủ
a dãy con tìm
đượ
c (qui
ướ
c:
n
ế
u không có dãy con nào tho
ả
mãn
đ
i
ề
u ki
ệ
n
đặ
t ra thì
k
= -1) .
Ví dụ:
MAXSEQ.INP MAXSEQ.OUT MAXSEQ.INP MAXSEQ.OUT
5 6
-2
3
2
-2
3
4
4 9
2
3
2
-2
-1
Hạn chế:
Trong t
ấ
t c
ả
các test:
1 ≤
n
≤ 20000; |
a
i
| ≤ 20000; |
p
| ≤ 10
9
.
Có 50% s
ố
l
ượ
ng test v
ớ
i
n
≤
1000.
o Olympic tin h
ọ
c Vi
ệ
t Nam
Bài 2. Đường đi trên lưới
Cho m
ộ
t l
ướ
i ô vuông g
ồ
m
m
dòng và
n
c
ộ
t. Các dòng
đượ
c
đ
ánh s
ố
t
ừ
1
đế
n m t
ừ
trên xu
ố
ng d
ướ
i,
các c
ộ
t
đượ
c
đ
ánh s
ố
t
ừ
1
đế
n
n
t
ừ
trái qua ph
ả
i. Ô n
ằ
m
ở
v
ị
trí dòng
i
và c
ộ
t
j
c
ủ
a l
ướ
i
đượ
c g
ọ
i là ô
(
i,j
) và khi
đ
ó,
i
đượ
c g
ọ
i là to
ạ
độ
dòng còn
j
đượ
c g
ọ
i là to
ạ
độ
c
ộ
t c
ủ
a ô này. Trên ô (
i,j
) c
ủ
a l
ướ
i ghi
s
ố
nguyên d
ươ
ng
a
ij
,
i
= 1, 2, ...,
m
;
j
= 1, 2, ...,
n
. Trên l
ướ
i
đ
ã cho, t
ừ
ô (
i,j
) ta có th
ể
di chuy
ể
n
đế
n ô
(
p,q
) n
ế
u các
đ
i
ề
u ki
ệ
n sau
đ
ây
đượ
c tho
ả
mãn:
•
j
<
n
;
i
≤
p
;
j
≤
q
và
i
+
j
<
p + q
;
•
a
ij
và
a
pq
có
ướ
c s
ố
chung l
ớ
n h
ơ
n 1.
Ta g
ọ
i m
ộ
t cách di chuy
ể
n t
ừ
mép trái sang mép ph
ả
i c
ủ
a l
ướ
i là cách di chuy
ể
n b
ắ
t
đầ
u t
ừ
m
ộ
t ô có
to
ạ
độ
c
ộ
t b
ằ
ng 1 qua các ô c
ủ
a l
ướ
i tuân theo qui t
ắ
c di chuy
ể
n
đ
ã nêu và k
ế
t thúc
ở
m
ộ
t ô có to
ạ
độ
c
ộ
t b
ằ
ng
n
.
Yêu cầu:
Tính s
ố
cách di chuy
ể
n t
ừ
mép trái sang mép ph
ả
i c
ủ
a l
ướ
i.
Dữ liệu:
Vào t
ừ
file v
ă
n b
ả
n NETPATH.INP:
•
Dòng
đầ
u tiên ghi 2 s
ố
nguyên d
ươ
ng
m, n.
•
Dòng th
ứ
i
trong s
ố
m
dòng ti
ế
p theo ghi
n
s
ố
nguyên d
ươ
ng
a
i1
,
a
i2
, ...,
a
in
là các s
ố
trên dòng
th
ứ
i
c
ủ
a l
ướ
i,
i
= 1, 2, ...,
m
.
Hai s
ố
liên ti
ế
p trên cùng m
ộ
t dòng
đượ
c ghi cách b
ở
i ít nh
ấ
t m
ộ
t d
ấ
u cách.
Kết quả:
Ghi ra file v
ă
n b
ả
n NETPATH.OUT s
ố
nguyên
k
là s
ố
l
ượ
ng cách di chuy
ể
n tìm
đượ
c, bi
ế
t
r
ằ
ng d
ữ
li
ệ
u
đả
m b
ả
o
k
< 10
9
.
Ví dụ:
NETPATH.INP NETPATH.OUT NETPATH.INP NETPATH.OUT
2 2
2 4
6 8
4 2 2
2 5
6 7
0
Hạn chế:
Trong t
ấ
t c
ả
các test:
1
<
m, n
≤ 100;
a
ij
≤ 30000,
i
=1,2,...,
m
;
j
=1,2,...,
n
.
Có 50% s
ố
l
ượ
ng
test v
ớ
i
m, n
≤ 50.
o Olympic tin h
ọ
c Vi
ệ
t Nam
Bài 3. Mạng máy tính
M
ộ
t h
ệ
th
ố
ng
n
máy tính (các máy tính
đượ
c
đ
ánh s
ố
t
ừ
1
đế
n
n
)
đượ
c n
ố
i l
ạ
i thành m
ộ
t m
ạ
ng b
ở
i
m
kênh n
ố
i, m
ỗ
i kênh n
ố
i hai máy nào
đ
ó và cho phép truy
ề
n tin m
ộ
t chi
ề
u t
ừ
máy này
đế
n máy kia. Gi
ả
s
ử
s
và
t
là hai máy tính trong m
ạ
ng. Ta g
ọ
i
đườ
ng truy
ề
n tin t
ừ
máy
s
đế
n máy
t
là m
ộ
t dãy các máy
tính và các kênh n
ố
i chúng có d
ạ
ng:
s
=
u
1
,
e
1
,
u
2
, ...,
u
i
,
e
i
,
u
i+1
, ...,
u
k-1
,
e
k-1
,
u
k
= t,
trong
đ
ó
u
1
,
u
2
, ...,
u
k
là các máy tính trong m
ạ
ng,
e
i
– kênh truy
ề
n tin t
ừ
máy
u
i
đế
n máy
u
i+1
(
i
= 1, 2,
...,
k
-1).
M
ạ
ng máy tính
đượ
c g
ọ
i là
thông suốt
n
ế
u nh
ư
đố
i v
ớ
i hai máy
u
,
v
b
ấ
t k
ỳ
ta luôn có
đườ
ng
truy
ề
n tin t
ừ
u
đế
n
v
và
đườ
ng truy
ề
n tin t
ừ
v
đế
n
u
. M
ạ
ng máy tính
đượ
c g
ọ
i là
hầu như thông suốt
n
ế
u nh
ư
đố
i v
ớ
i hai máy
u
,
v
b
ấ
t k
ỳ
, ho
ặ
c là có
đườ
ng truy
ề
n tin t
ừ
u
đế
n
v
ho
ặ
c là có
đườ
ng truy
ề
n tin
t
ừ
v
đế
n
u
.
Bi
ế
t r
ằ
ng m
ạ
ng máy tính
đ
ã cho là h
ầ
u nh
ư
thông su
ố
t nh
ư
ng không là thông su
ố
t.
Yêu cầu:
Hãy xác
đị
nh xem có th
ể
b
ổ
sung
đ
úng m
ộ
t kênh truy
ề
n tin
để
bi
ế
n m
ạ
ng
đ
ã cho tr
ở
thành
thông su
ố
t
đượ
c hay không?
Dữ liệu:
Vào t
ừ
file v
ă
n b
ả
n ONEARC.INP:
•
Dòng
đầ
u tiên ch
ứ
a 2 s
ố
nguyên d
ươ
ng
n
và
m
.
•
Dòng th
ứ
i
trong s
ố
m
dòng ti
ế
p theo mô t
ả
kênh n
ố
i th
ứ
i
bao g
ồ
m hai s
ố
nguyên d
ươ
ng
u
i
, v
i
cho bi
ế
t kênh n
ố
i th
ứ
i
cho phép truy
ề
n tin t
ừ
máy
u
i
đế
n máy
v
i
,
i
=1,2,...,
m
.
Các s
ố
trên cùng m
ộ
t dòng
đượ
c ghi cách nhau b
ở
i d
ấ
u cách.
Kết quả:
Ghi ra file v
ă
n b
ả
n ONEARC.OUT:
•
Dòng
đầ
u tiên ghi ‘YES’ n
ế
u câu tr
ả
l
ờ
i là kh
ẳ
ng
đị
nh, ghi ‘NO’ n
ế
u câu tr
ả
l
ờ
i là ph
ủ
đị
nh.
•
N
ế
u câu tr
ả
l
ờ
i là kh
ẳ
ng
đị
nh thì dòng th
ứ
hai ghi hai s
ố
nguyên d
ươ
ng
u, v
cách nhau b
ở
i d
ấ
u
cách cho bi
ế
t c
ầ
n b
ổ
sung kênh truy
ề
n tin t
ừ
máy
u
đế
n máy
v
để
bi
ế
n m
ạ
ng thành thông su
ố
t.
Ví dụ:
ONEARC.INP ONEARC.OUT
3 2
1 2
2 3
YES
3 1
Hạn chế:
Trong t
ấ
t c
ả
các test:
n
≤ 2000,
m
≤ 30000.Có 50% s
ố
l
ượ
ng test v
ớ
i
n
≤ 200.
o Olympic tin h
ọ
c Vi
ệ
t Nam
Bài 4. Xoá cặp ô
Cho m
ộ
t b
ả
ng hình ch
ữ
nh
ậ
t kích th
ướ
c
m×n
ô vuông kích th
ướ
c
đơ
n v
ị
. Các dòng
đượ
c
đ
ánh s
ố
t
ừ
1
đế
n
m
, t
ừ
trên xu
ố
ng d
ướ
i. Các c
ộ
t
đượ
c
đ
ánh s
ố
t
ừ
1
đế
n
n
, t
ừ
trái qua ph
ả
i. Ô n
ằ
m
ở
v
ị
trí dòng
i
và
c
ộ
t
j
c
ủ
a b
ả
ng
đượ
c g
ọ
i là ô (
i,j
). M
ỗ
i ô c
ủ
a b
ả
ng ho
ặ
c
đượ
c
để
tr
ố
ng ho
ặ
c ch
ứ
a m
ộ
t ký t
ự
l
ấ
y t
ừ
t
ậ
p Σ g
ồ
m các ch
ữ
s
ố
t
ừ
0
đế
n 9 và các ch
ữ
cái la tinh in hoa t
ừ
A
đế
n Z. M
ỗ
i ký t
ự
c
ủ
a
t
ậ
p Σ xu
ấ
t hi
ệ
n
ở
không quá 4 ô trong b
ả
ng. Hai ô ch
ứ
a
cùng
m
ộ
t ký t
ự
đượ
c g
ọ
i là gi
ố
ng nhau. Hai ô gi
ố
ng nhau có th
ể
xoá
đượ
c n
ế
u chúng có c
ạ
nh chung ho
ặ
c tâm (giao
đ
i
ể
m
c
ủ
a hai
đườ
ng chéo) c
ủ
a 2 ô này có th
ể
n
ố
i v
ớ
i nhau b
ằ
ng
m
ộ
t
đườ
ng g
ấ
p khúc g
ồ
m không quá 3
đ
o
ạ
n th
ẳ
ng
độ
dài
nguyên, m
ỗ
i
đ
o
ạ
n song song v
ớ
i c
ạ
nh c
ủ
a b
ả
ng, và ngo
ạ
i
tr
ừ
hai ô c
ầ
n xoá,
đườ
ng g
ấ
p khúc này ch
ỉ
qua các ô tr
ố
ng hay n
ằ
m ngoài b
ả
ng. Các ô b
ị
xoá tr
ở
thành
ô tr
ố
ng. M
ỗ
i l
ầ
n xoá m
ộ
t c
ặ
p ô c
ủ
a b
ả
ng
đượ
c g
ọ
i là m
ộ
t b
ướ
c. Hình bên nêu ví d
ụ
v
ớ
i tr
ườ
ng h
ợ
p
m
=
4 và
n
= 6. B
ướ
c
đầ
u tiên có th
ể
xoá hai ô ch
ứ
a ký t
ự
‘
A
’ ho
ặ
c 2 ô ch
ứ
a ký t
ự
‘
B
’ hay 2 ô ch
ứ
a ký t
ự
‘
D
’. Hai ô ch
ứ
a ký t
ự
‘
C
’ ch
ỉ
có th
ể
xoá s
ớ
m nh
ấ
t
ở
b
ướ
c th
ứ
2, sau khi
đ
ã xoá các ô ch
ứ
a ‘
A
’. Nh
ư
v
ậ
y,
để
xoá tr
ố
ng 2 ô (2, 1) và (1,2) c
ầ
n th
ự
c hi
ệ
n t
ố
i thi
ể
u 3 b
ướ
c xoá.
Yêu cầu:
Cho hai s
ố
m
,
n
và
m
xâu
độ
dài
n
mô t
ả
các dòng c
ủ
a b
ả
ng và hai ô khác tr
ố
ng (
r
1
,
c
1
), (
r
2
,
c
2
). Hãy xác
đị
nh s
ố
b
ướ
c ít nh
ấ
t c
ầ
n th
ự
c hi
ệ
n
để
bi
ế
n
đổ
i các ô (
r
1
,
c
1
) và (
r
2
,
c
2
) tr
ở
thành ô tr
ố
ng.
Dữ liệu
: Vào t
ừ
file v
ă
n b
ả
n DEL.INP:
•
Dòng
đầ
u tiên ch
ứ
a 6 s
ố
nguyên
m, n, r
1
,
c
1
,
r
2
,
c
2
, hai s
ố
liên ti
ế
p
đượ
c ghi cách nhau b
ở
i d
ấ
u
cách.
•
Dòng th
ứ
i
+1 ch
ứ
a xâu
n
ký t
ự
mô t
ả
dòng th
ứ
i
c
ủ
a b
ả
ng (
i
= 1, 2, ...,
m
). Các ô tr
ố
ng
đượ
c
th
ể
hi
ệ
n b
ằ
ng d
ấ
u ch
ấ
m (‘
.
’).
Kết quả
:
Đư
a ra file v
ă
n b
ả
n DEL.OUT s
ố
nguyên
k
là s
ố
b
ướ
c ít nh
ấ
t tìm
đượ
c (qui
ướ
c: n
ế
u không
t
ồ
n t
ạ
i cách bi
ế
n
đổ
i tho
ả
mãn yêu c
ầ
u
đặ
t ra thì
k
=-1).
Ví dụ
:
DEL.INP DEL.OUT DEL.INP DEL.OUT
4 5 2 1 1 2
ABD...
C.12..
..21C.
A.B.D.
3
4 6 4 2 4 6
ABCDUV
BADCVU
ABCDUV
BADCVU
3
Hạn chế: Trong tất cả các test:
0 <
m
≤
10, 0 <
n
≤
20. Có
60% số lượng test có m ≤ 8, n ≤ 10 và số lượng
các ô khác trống không quá
2
nm ×
.
A B D
C 1 2
2 1 C
A B D
m = 4, n = 6
1
2
3
4
1 2 3 4 5 6
o Olympic tin h
ọ
c Vi
ệ
t Nam
Bảng B
Bài 1. Chọn ô
Cho m
ộ
t b
ả
ng hình ch
ữ
nh
ậ
t kích th
ướ
c 4×n ô vuông. Các dòng
đượ
c
đ
ánh s
ố
t
ừ
1
đế
n 4, t
ừ
trên
xu
ố
ng d
ướ
i, các c
ộ
t
đượ
c
đ
ánh s
ố
t
ừ
1
đế
n n t
ừ
trái qua ph
ả
i. Ô n
ằ
m trên giao c
ủ
a dòng i và c
ộ
t j
đượ
c
g
ọ
i là ô (i,j). Trên m
ỗ
i ô (i,j) có ghi m
ộ
t s
ố
nguyên a
ij
, i =1, 2, 3, 4; j =1, 2, ..., n. M
ộ
t cách ch
ọ
n ô là
vi
ệ
c xác
đị
nh m
ộ
t t
ậ
p con khác r
ỗ
ng S c
ủ
a t
ậ
p t
ấ
t c
ả
các ô c
ủ
a b
ả
ng sao cho không có hai ô nào trong S
có chung c
ạ
nh. Các ô trong t
ậ
p S
đượ
c g
ọ
i là ô
đượ
c ch
ọ
n, t
ổ
ng các s
ố
trong các ô
đượ
c ch
ọ
n
đượ
c g
ọ
i
là tr
ọ
ng l
ượ
ng c
ủ
a cách ch
ọ
n.
Ví d
ụ
: Xét b
ả
ng v
ớ
i n=3 trong hình v
ẽ
d
ướ
i
đ
ây
1 2 3
1 -1 9 3
2 -4 5 -6
3 7 8 9
4 9 7 2
Cách ch
ọ
n c
ầ
n tìm là t
ậ
p các ô S = {(3,1), (1,2), (4,2), (3,3)} v
ớ
i tr
ọ
ng l
ượ
ng 32.
Yêu cầu:
Hãy tìm cách ch
ọ
n ô v
ớ
i tr
ọ
ng l
ượ
ng l
ớ
n nh
ấ
t.
Dữ liệu:
Vào t
ừ
file v
ă
n b
ả
n SELECT.INP:
•
Dòng
đầ
u tiên ch
ứ
a s
ố
nguyên d
ươ
ng n là s
ố
c
ộ
t c
ủ
a b
ả
ng.
•
Dòng th
ứ
j trong s
ố
n dòng ti
ế
p theo ch
ứ
a 4 s
ố
nguyên a
1j
, a
2j
, a
3j
, a
4j
, hai s
ố
liên ti
ế
p cách nhau
ít nh
ấ
t m
ộ
t d
ấ
u cách, là 4 s
ố
trên c
ộ
t j c
ủ
a b
ả
ng.
Kết quả:
Ghi ra file v
ă
n b
ả
n SELECT.OUT tr
ọ
ng l
ượ
ng c
ủ
a cách ch
ọ
n tìm
đượ
c.
Ví dụ:
SELECT.INP SELECT.OUT SELECT.INP SELECT.OUT
3
-1 -4 7 9
9 5 8 7
3 -6 9 2
32
3
5 5 5 5
5 5 5 5
5 5 5 5
30
Hạn chế:
Trong t
ấ
t c
ả
các test: n ≤ 10000, |a
ij
|≤ 30000. Có 50% s
ố
l
ượ
ng test v
ớ
i n ≤ 1000.
o Olympic tin h
ọ
c Vi
ệ
t Nam
Bài 2. Quân tượng
Xét bàn c
ờ
vuông kích th
ướ
c n
×
n. Các dòng
đượ
c
đ
ánh s
ố
t
ừ
1
đế
n n, t
ừ
d
ướ
i lên trên. Các c
ộ
t
đượ
c
đ
ánh s
ố
t
ừ
1
đế
n n t
ừ
trái qua ph
ả
i. Ô n
ằ
m trên giao c
ủ
a dòng i và c
ộ
t j
đượ
c g
ọ
i là ô (i,j). Trên bàn c
ờ
có m (0
≤
m
≤
n) quân c
ờ
. V
ớ
i m > 0, quân c
ờ
th
ứ
i
ở
ô (r
i
, c
i
), i = 1,2,..., m. Không có hai quân c
ờ
nào
ở
trên cùng m
ộ
t ô. Trong s
ố
các ô còn l
ạ
i c
ủ
a bàn c
ờ
, t
ạ
i ô (p, q) có m
ộ
t quân t
ượ
ng. M
ỗ
i m
ộ
t n
ướ
c
đ
i,
t
ừ
v
ị
trí
đ
ang
đứ
ng quân t
ượ
ng ch
ỉ
có th
ể
di chuy
ể
n
đế
n
đượ
c nh
ữ
ng ô trên cùng
đườ
ng chéo v
ớ
i nó
mà trên
đườ
ng
đ
i không ph
ả
i qua các ô
đ
ã có quân.
C
ầ
n ph
ả
i
đư
a quân t
ượ
ng t
ừ
ô xu
ấ
t phát (p, q) v
ề
ô
đ
ích (s,t). Gi
ả
thi
ế
t là
ở
ô
đ
ích không có quân c
ờ
.
N
ế
u ngoài quân t
ượ
ng không có quân nào khác trên bàn c
ờ
thì ch
ỉ
có 2 tr
ườ
ng h
ợ
p: ho
ặ
c là không th
ể
t
ớ
i
đượ
c ô
đ
ích, ho
ặ
c là t
ớ
i
đượ
c sau không quá 2 n
ướ
c
đ
i (hình trái). Khi trên bàn c
ờ
còn có các quân
c
ờ
khác, v
ấ
n
đề
s
ẽ
không còn
đơ
n gi
ả
n nh
ư
v
ậ
y.
Yêu cầu:
Cho kích th
ướ
c bàn c
ờ
n, s
ố
quân c
ờ
hi
ệ
n có trên bàn c
ờ
m và v
ị
trí c
ủ
a chúng, ô xu
ấ
t phát
và ô
đ
ích c
ủ
a quân t
ượ
ng. Hãy xác
đị
nh s
ố
n
ướ
c
đ
i ít nh
ấ
t c
ầ
n th
ự
c hi
ệ
n
để
đư
a quân t
ượ
ng v
ề
ô
đ
ích
ho
ặ
c
đư
a ra s
ố
-1 n
ế
u
đ
i
ề
u này không th
ể
th
ự
c hi
ệ
n
đượ
c.
Dữ liệu:
Vào t
ừ
file v
ă
n b
ả
n BISHOP.INP:
•
Dòng
đầ
u tiên ch
ứ
a 6 s
ố
nguyên n, m, p, q, s, t;
•
N
ế
u m > 0 thì m
ỗ
i dòng th
ứ
i trong m dòng ti
ế
p theo ch
ứ
a m
ộ
t c
ặ
p s
ố
nguyên r
i
, c
i
xác
đị
nh v
ị
trí quân th
ứ
i.
Hai s
ố
liên ti
ế
p trên cùng m
ộ
t dòng
đượ
c ghi cách nhau ít nh
ấ
t m
ộ
t d
ấ
u cách.
Kết quả: Đư
a ra file v
ă
n b
ả
n BISHOP.OUT m
ộ
t s
ố
nguyên là s
ố
n
ướ
c
đ
i tìm
đượ
c.
Ví dụ:
BISHOP.INP BISHOP.OUT
3 8 3 7 2 1 4
5 4
3 4
4 7
Hạn chế
: Trong t
ấ
t c
ả
các test: 1
≤
n
≤
200. Có 60% s
ố
l
ượ
ng test v
ớ
i n
≤
20.
o Olympic tin h
ọ
c Vi
ệ
t Nam
Bài 3. Kênh xung yếu
M
ộ
t h
ệ
th
ố
ng n máy tính (các máy tính
đượ
c
đ
ánh s
ố
t
ừ
1
đế
n n)
đượ
c n
ố
i l
ạ
i thành m
ộ
t m
ạ
ng b
ở
i m
kênh n
ố
i, m
ỗ
i kênh n
ố
i hai máy nào
đ
ó và cho phép truy
ề
n tin m
ộ
t chi
ề
u t
ừ
máy này
đế
n máy kia. Ta
g
ọ
i m
ộ
t
mạch vòng
c
ủ
a m
ạ
ng
đ
ã cho là m
ộ
t dãy các máy tính và các kênh n
ố
i chúng có d
ạ
ng:
u
1
, e
1
, u
2
, ...,u
i
, e
i
, u
i+1
, ..., u
k-1
, e
k-1
, u
k
, e
k
, u
1
trong
đ
ó u
1
, u
2
, ..., u
k
là các máy tính khác nhau trong m
ạ
ng, e
i
– kênh truy
ề
n tin t
ừ
máy u
i
đế
n máy
u
i+1
(i = 1, 2, ..., k-1), e
k
là kênh truy
ề
n tin t
ừ
máy u
k
đế
n máy u
1
. M
ộ
t kênh truy
ề
n tin trong m
ạ
ng
đượ
c
g
ọ
i là
kênh xung yếu
n
ế
u nh
ư
b
ấ
t c
ứ
m
ạ
ch vòng nào c
ủ
a m
ạ
ng c
ũ
ng
đề
u ch
ứ
a nó.
Yêu cầu:
Hãy xác
đị
nh t
ấ
t c
ả
các kênh xung y
ế
u c
ủ
a m
ạ
ng
đ
ã cho.
Dữ liệu:
Vào t
ừ
file v
ă
n b
ả
n CIRARC.INP:
•
Dòng
đầ
u tiên ch
ứ
a 2 s
ố
nguyên d
ươ
ng n và m.
•
Dòng th
ứ
i trong s
ố
m dòng ti
ế
p theo mô t
ả
kênh n
ố
i th
ứ
i bao g
ồ
m hai s
ố
nguyên d
ươ
ng u
i
, v
i
cho bi
ế
t kênh n
ố
i th
ứ
i cho phép truy
ề
n tin t
ừ
máy u
i
đế
n máy v
i
.
Các s
ố
trên cùng m
ộ
t dòng
đượ
c ghi cách nhau b
ở
i d
ấ
u cách.
Kết quả:
Ghi ra file v
ă
n b
ả
n CIRARC.OUT:
•
Dòng
đầ
u tiên ghi s
ố
nguyên k là s
ố
l
ượ
ng kênh xung y
ế
u trong m
ạ
ng
đ
ã cho. Ghi k = -1 n
ế
u
m
ạ
ng không ch
ứ
a kênh xung y
ế
u.
•
N
ế
u k>0 thì m
ỗ
i dòng trong s
ố
k dòng ti
ế
p theo ghi thông tin v
ề
m
ộ
t kênh xung y
ế
u tìm
đượ
c
theo qui cách mô t
ả
gi
ố
ng nh
ư
trong file d
ữ
li
ệ
u vào.
Ví dụ:
CIRARC.INP CIRARC.OUT CIRARC.INP CIRARC.OUT
2 2
1 2
2 1
2
1 2
2 1
3 3
1 2
2 3
1 3
-1
Hạn chế
: Trong t
ấ
t c
ả
các test: n
≤
1000, m ≤ 20000. Có 50% s
ố
l
ượ
ng test v
ớ
i n
≤
200.
o Olympic tin h
ọ
c Vi
ệ
t Nam
Bài 4. Biến đổi bảng
Cho m
ộ
t b
ả
ng hình ch
ữ
nh
ậ
t kích th
ướ
c m×n ô vuông kích th
ướ
c
đơ
n v
ị
. Các dòng
đượ
c
đ
ánh s
ố
t
ừ
1
đế
n m, t
ừ
trên xu
ố
ng d
ướ
i. Các c
ộ
t
đượ
c
đ
ánh s
ố
t
ừ
1
đế
n n, t
ừ
trái qua ph
ả
i. M
ỗ
i ô c
ủ
a b
ả
ng ho
ặ
c
đượ
c
để
tr
ố
ng ho
ặ
c ch
ứ
a m
ộ
t ký t
ự
l
ấ
y t
ừ
t
ậ
p Σ g
ồ
m các
ch
ữ
s
ố
t
ừ
0
đế
n 9 và các ch
ữ
cái la tinh in hoa t
ừ
A
đế
n Z. Hai ô
ch
ứ
a cùng m
ộ
t ký t
ự
đượ
c g
ọ
i là gi
ố
ng nhau. M
ỗ
i ký t
ự
c
ủ
a
t
ậ
p Σ xu
ấ
t hi
ệ
n
ở
không quá 4 ô trong b
ả
ng. Hai ô gi
ố
ng
nhau có th
ể
xoá
đượ
c n
ế
u chúng có c
ạ
nh chung ho
ặ
c có th
ể
n
ố
i các tâm (giao
đ
i
ể
m c
ủ
a hai
đườ
ng chéo) c
ủ
a chúng v
ớ
i
nhau b
ằ
ng m
ộ
t
đườ
ng g
ấ
p khúc g
ồ
m không quá 3
đ
o
ạ
n
th
ẳ
ng
độ
dài nguyên, m
ỗ
i
đ
o
ạ
n song song v
ớ
i c
ạ
nh c
ủ
a
b
ả
ng và ngo
ạ
i tr
ừ
hai ô c
ầ
n xoá,
đườ
ng g
ấ
p khúc ch
ỉ
qua các
ô tr
ố
ng hay n
ằ
m ngoài b
ả
ng. Các ô b
ị
xoá tr
ở
thành ô tr
ố
ng. M
ỗ
i l
ầ
n xoá m
ộ
t c
ặ
p ô c
ủ
a b
ả
ng
đượ
c g
ọ
i
là m
ộ
t b
ướ
c. Hình bên nêu ví d
ụ
v
ớ
i tr
ườ
ng h
ợ
p m = 4 và n = 6. B
ướ
c
đầ
u tiên có th
ể
xoá hai ô ch
ứ
a
ký t
ự
‘A’, ti
ế
p theo, l
ầ
n l
ượ
t xoá các c
ặ
p ô ch
ứ
a ‘B’, ch
ứ
a ‘C’ và c
ặ
p ô ch
ứ
a ‘D’.
Ở
ví d
ụ
này, sau khi
th
ự
c hi
ệ
n 4 b
ướ
c xoá có th
ể
, trong b
ả
ng còn l
ạ
i 4 ô không th
ể
xoá
đượ
c.
Yêu cầu:
Cho m, n và m xâu
độ
dài n mô t
ả
các dòng c
ủ
a b
ả
ng. Hãy xác
đị
nh s
ố
l
ượ
ng ô l
ớ
n nh
ấ
t có
th
ể
xoá
đượ
c.
Dữ liệu:
Vào t
ừ
file v
ă
n b
ả
n CHANGE.INP:
•
Dòng
đầ
u tiên ch
ứ
a 2 s
ố
nguyên m, n
đượ
c ghi cách nhau b
ở
i d
ấ
u cách.
•
Dòng th
ứ
i+1 ch
ứ
a xâu n ký t
ự
mô t
ả
dòng th
ứ
i c
ủ
a b
ả
ng (i = 1, 2, ..., m). Các ô tr
ố
ng
đượ
c th
ể
hi
ệ
n b
ằ
ng d
ấ
u ch
ấ
m (‘.’).
Kết quả: Đư
a ra file v
ă
n b
ả
n CHANGE.OUT m
ộ
t s
ố
nguyên là s
ố
l
ượ
ng ô l
ớ
n nh
ấ
t có th
ể
xoá
đượ
c.
Ví dụ:
CHANGE.INP CHANGE.OUT CHANGE.INP CHANGE.OUT
4 5
ABD...
C.12..
..21C.
A.B.D.
8
4 6
ABCDUV
BADCVU
ABCDUV
BADCVU
24
Hạn chế:
Trong t
ấ
t c
ả
các test: 0 < m
≤
10, 0 < n
≤
10. Có 60% s
ố
l
ượ
ng test có m
≤
5, n
≤
6 và s
ố
l
ượ
ng các ô khác tr
ố
ng không quá
2
nm ×
.
A B D
C 1 2
2 1 C
A B D
m = 4, n = 6
1
2
3
4
1 2 3 4 5 6
o Olympic tin h
ọ
c Vi
ệ
t Nam
Năm 2007
Bài 1. Dãy con không giảm dài nhất
(6
đ
i
ể
m)
Cho dãy s
ố
nguyên d
ươ
ng a
1
, a
2
, ..., a
n
.
Dãy s
ố
a
i
, a
i+1
, ..., a
j
th
ỏ
a mãn a
i
≤
a
i+1
≤
...
≤
a
j
,
v
ớ
i 1
≤
i
≤
j
≤
n
đượ
c g
ọ
i là dãy con không gi
ả
m c
ủ
a dãy s
ố
đ
ã cho và khi
đ
ó s
ố
j-i+1
đượ
c g
ọ
i là
độ
dài c
ủ
a dãy con này.
Yêu cầu:
Trong s
ố
các dãy con không gi
ả
m c
ủ
a dãy s
ố
đ
ã cho mà các ph
ầ
n t
ử
c
ủ
a nó
đề
u thu
ộ
c dãy s
ố
{u
k
} xác
đị
nh b
ở
i u
1
= 1, u
k
= u
k-1
+ k (k
≥
2), hãy tìm dãy con có
độ
dài l
ớ
n nh
ấ
t.
Dữ liệu:
Vào t
ừ
file v
ă
n b
ả
n MAXISEQ.INP
•
Dòng
đầ
u tiên ch
ứ
a m
ộ
t s
ố
nguyên d
ươ
ng n (n
≤
10
4
);
•
Dòng th
ứ
i trong n dòng ti
ế
p theo ch
ứ
a m
ộ
t s
ố
nguyên d
ươ
ng a
i
(a
i
≤
10
8
) là s
ố
h
ạ
ng th
ứ
i c
ủ
a
dãy s
ố
đ
ã cho, i = 1, 2, ..., n.
Kết quả:
Ghi ra file v
ă
n b
ả
n MAXISEQ.OUT
s
ố
nguyên d là
độ
dài c
ủ
a dãy con không gi
ả
m tìm
đượ
c
(quy
ướ
c r
ằ
ng n
ế
u không có dãy con nào th
ỏ
a mãn
đ
i
ề
u ki
ệ
n
đặ
t ra thì d = 0).
Ví dụ:
Cho dãy s
ố
có 8 ph
ầ
n t
ử
: 2, 2007, 6, 6, 15, 16, 3, 21. Các dãy con không gi
ả
m c
ủ
a dãy s
ố
đ
ã
cho mà các ph
ầ
n t
ử
c
ủ
a nó
đề
u thu
ộ
c dãy {u
k
} là: 6, 6, 15 và 3, 21 (vì u
2
= 3, u
3
= 6, u
5
= 15, u
6
=
21). Dãy c
ầ
n tìm là 6, 6, 15 có
độ
dài là 3.
MAXISEQ.INP MAXISEQ.OUT
8
2
2007
6
6
15
16
3
21
3
o Olympic tin h
ọ
c Vi
ệ
t Nam
Bài 2. Siêu thị may mắn
(7
đ
i
ể
m)
An
đượ
c m
ờ
i tham gia trò ch
ơ
i “Siêu th
ị
may m
ắ
n” do
đ
ài truy
ề
n hình ZTV t
ổ
ch
ứ
c. Siêu th
ị
đượ
c
đặ
t
trong tr
ườ
ng quay truy
ề
n hình có n m
ặ
t hàng
đượ
c
đ
ánh s
ố
t
ừ
1
đế
n n và m
ặ
t hàng th
ứ
i
đượ
c niêm y
ế
t
giá là c
i
đồ
ng, i = 1, 2, ..., n. Theo th
ể
l
ệ
c
ủ
a trò ch
ơ
i, An
đượ
c ban t
ổ
ch
ứ
c t
ặ
ng m
ộ
t th
ẻ
mua hàng có
giá tr
ị
là s
đồ
ng và ph
ả
i dùng h
ế
t s
ố
ti
ề
n trong th
ẻ
này
để
mua hàng trong siêu th
ị
v
ớ
i
đ
i
ề
u ki
ệ
n m
ặ
t
hàng th
ứ
i ch
ỉ
đượ
c mua v
ớ
i s
ố
l
ượ
ng nhi
ề
u nh
ấ
t là m
i
, i = 1, 2, …, n. An s
ẽ
là ng
ườ
i th
ắ
ng cu
ộ
c n
ế
u
tìm
đượ
c t
ổ
ng s
ố
cách mua hàng th
ỏ
a mãn yêu c
ầ
u
đặ
t ra và ch
ỉ
ra m
ộ
t cách mua hàng n
ế
u có.
Yêu cầu:
Hãy giúp An tr
ở
thành ng
ườ
i th
ắ
ng cu
ộ
c khi cho b
ạ
n bi
ế
t tr
ướ
c các giá tr
ị
n, s, c
i
và m
i
(1
≤
n
≤
500; 1
≤
s
≤
10
5
; 1
≤
c
i
≤
10
4
; 1
≤
m
i
≤
100) v
ớ
i i = 1, 2, …, n.
Dữ liệu:
Vào t
ừ
file v
ă
n b
ả
n SMARKET.INP
•
Dòng
đầ
u tiên ch
ứ
a hai s
ố
nguyên d
ươ
ng s và n;
•
Dòng th
ứ
i trong n dòng ti
ế
p theo ch
ứ
a hai s
ố
nguyên d
ươ
ng c
i
và m
i
v
ớ
i i = 1, 2, …, n.
Kết quả:
Ghi ra file v
ă
n b
ả
n SMARKET.OUT
•
Dòng
đầ
u tiên ghi s
ố
nguyên d là t
ổ
ng s
ố
cách mua hàng tìm
đượ
c;
•
N
ế
u d
≥
1 thì dòng th
ứ
hai ghi m
ộ
t cách mua hàng tìm
đượ
c là m
ộ
t dãy n s
ố
nguyên, trong
đ
ó s
ố
h
ạ
ng th
ứ
i là s
ố
l
ượ
ng m
ặ
t hàng th
ứ
i mua
đượ
c trong cách mua hàng này, i = 1, 2, …, n.
Hai s
ố
liên ti
ế
p trên m
ộ
t dòng trong file d
ữ
li
ệ
u và file k
ế
t qu
ả
cách nhau ít nh
ấ
t m
ộ
t d
ấ
u cách.
Ví dụ:
SMARKET.INP SMARKET.OUT
12 3
4 1
6 2
2 1
2
0 2 0