Cities in Alberta tend to be laid out as rectangular grids of blocks. Blocks are labeled with coordinates to
from north to south and
to
from west to east.
The quality of living in each particular block has been ranked by a distinct number, called quality rank, between and
, where
is the best and
is the worst.
The city planning department wishes to identify a rectangular set of blocks with dimensions from north to south and
from west to east, such that the median quality rank among all blocks in the rectangle is the best.
and
are odd numbers not exceeding
and
respectively. The median quality rank among an odd number of quality ranks is defined to be the quality rank
in the set such that the number of quality ranks better than
equals the number of quality ranks worse than
.
You are to implement a procedure rectangle(R,C,H,W,Q) where and
represent the total size of the city,
and
represent the dimensions of the set of blocks, and
is an array such that
is the quality rank for the block labeled
from north to south and
from west to east.
Your implementation of rectangle must return a number: the best (numerically smallest) possible median quality rank of an by
rectangle of blocks.
Each test run will only call rectangle once.
Example 1
R=5, C=5, H=3, W=3, Q= 5 11 12 16 25 17 18 2 7 10 4 23 20 3 1 24 21 19 14 9 6 22 8 13 15
For this example, the best (numerically smallest) median quality rank of is achieved by the middle-right rectangle of
shown in bold. That is,
rectangle(R,C,H,W,Q)=9
Example 2
R=2, C=6, H=1, W=5, Q= 6 1 2 11 7 5 9 3 4 10 12 8
For this example the correct answer is .
Subtask 1 [20 points]
Assume and
do not exceed
.
Subtask 2 [20 points]
Assume and
do not exceed
.
Subtask 3 [20 points]
Assume and
do not exceed
.
Subtask 4 [20 points]
Assume and
do not exceed
.
Subtask 5 [20 points]
Assume and
do not exceed
.
Implementation Details
- Implementation folder:
/home/ioi2010-contestant/quality/
(prototype: quality.zip) - To be implemented by contestant:
quality.c
orquality.cpp
orquality.pas
- Contestant interface:
quality.h
orquality.pas
- Grader interface: none
- Sample grader:
grader.c
orgrader.cpp
orgrader.pas
- Sample grader input:
grader.in.1
grader.in.2
etc.
Note: The first line of input contains:The following lines contain the elements of
, in row-major order.
- Expected output for sample grader input:
grader.expect.1
grader.expect.2
etc.
Comments
how do you test this on your own computer? What is the command exactly??
For anyone getting CE, the exact function signature is: