There is a class of
students, numbered
through
. Every day the teacher of the class has some projects for the students. Each project has to be completed by a team of students within the same day. The projects may have various difficulty. For each project, the teacher knows the exact size of a team that should work on it.
Different students may prefer different team sizes. More precisely, student
can only be assigned to a team of size between
and
inclusive. On each day, a student may be assigned to at most one team. Some students might not be assigned to any teams. Each team will work on a single project.
The teacher has already chosen the projects for each of the next
days. For each of these days, determine whether it is possible to assign students to teams so that there is one team working on each project.
Example
Suppose there are
students and
days. The students' constraints on team sizes are given in the table below:
On the first day there are
projects. The required team sizes are
and
. These two teams can be formed by assigning student 0 to a team of size 1 and the remaining three students to a team of size 3.
On the second day there are projects
again, but this time the required team sizes are
and
. In this case it is not possible to form the teams, as there is only one student who can be in a team of size 1.
Task
You are given the description of all students:
,
, and
, as well as a sequence of
questions — one about each day. Each question consists of the number
of projects on that day and a sequence
of length
containing the required team sizes. For each question, your program must return whether it is possible to form all the teams.
You need to implement functions:
Copy
void init(int N, int A[], int B[])
- The grader will call this function first and exactly once.
N
: the number of students.
A
: an array of length
: A[i]
is the minimum team size for student
.
B
: an array of length
: B[i]
is the maximum team size for student
.
- You may assume that
for each
.
Copy
int can(int M, int K[])
- After calling init once, the grader will call this function
times in a row, once for each day.
M
: the number of projects for this day.
K
: an array of length
containing the required team size for each of these projects.
- The function should return
1
if it is possible to form all the required teams and 0
otherwise.
- You may assume that
, and that for each
we have
. Note that the sum of all
may exceed
.
Subtasks
Let us denote by
the sum of values of
in all calls to can(M, K)
.
subtask |
points |
 |
 |
Additional Constraints |
1 |
21 |
 |
 |
none |
2 |
13 |
 |
 |
none |
3 |
43 |
 |
 |
 |
4 |
23 |
 |
 |
 |
Comments
This comment is hidden due to too much negative feedback. Show it anyway.
Read the line under the Subtasks header.
ah thanks, ctrl F wasnt returning anything useful.
Was there 2s time limit during the original IOI contest? It seems pretty tight and this problem has a higher TL on other OJs (Yandex: 8s, wcipeg.com: 5s; my TLE solution passes with 1.5s on wcipeg.com, so it can't be just due to a slower testing machine). If that's not the original TL, I think it should be increased, at least to 3s.
I don't remember what the time limit was on the official IOI, though we left it at 2s here because there was an AC solution. I've increased the TL to 3s to reflect the other AC solution's max time being 1.5s, and have rejudged all previous submissions.
This comment is hidden due to too much negative feedback. Show it anyway.