#include "teams.h"
#include <algorithm>
#include <queue>
struct Interval
{
int start, end;
bool operator <(const Interval &other) const
{
return (other.end < end);
}
};
const int MAXN = 1e5;
int students;
Interval prefer[MAXN];
std::priority_queue<Interval> canAssign;
long long groupSizes[MAXN];
void init(int N, int A[], int B[])
{
students = N;
for (int iStud = 0; iStud < students; iStud++)
{
prefer[iStud].start = A[iStud];
prefer[iStud].end = B[iStud];
}
std::sort(prefer, prefer + students, [](const Interval &a, const Interval &b) { return (a.start != b.start ? a.start < b.start : a.end < b.end); });
}
int can(int M, int K[])
{
long long sizeSum = 0;
for (int iGroup = 0; iGroup < M; iGroup++)
{
sizeSum += K[iGroup];
if (sizeSum > students)
return 0;
}
while (!canAssign.empty())
canAssign.pop();
std::sort(K, K + M);
int iStud = 0;
for (int iGroup = 0; iGroup < M; iGroup++)
{
for (; iStud < students && prefer[iStud].start <= K[iGroup]; iStud++)
canAssign.emplace(prefer[iStud]);
while (!canAssign.empty() && canAssign.top().end < K[iGroup])
canAssign.pop();
if ((int)canAssign.size() < K[iGroup])
return 0;
for (int iAssign = 0; iAssign < K[iGroup]; iAssign++)
canAssign.pop();
}
return 1;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
376 KB |
Output is correct |
2 |
Correct |
2 ms |
376 KB |
Output is correct |
3 |
Correct |
2 ms |
256 KB |
Output is correct |
4 |
Correct |
2 ms |
416 KB |
Output is correct |
5 |
Correct |
2 ms |
256 KB |
Output is correct |
6 |
Correct |
2 ms |
380 KB |
Output is correct |
7 |
Correct |
2 ms |
376 KB |
Output is correct |
8 |
Correct |
3 ms |
376 KB |
Output is correct |
9 |
Correct |
2 ms |
376 KB |
Output is correct |
10 |
Correct |
2 ms |
252 KB |
Output is correct |
11 |
Correct |
2 ms |
256 KB |
Output is correct |
12 |
Correct |
2 ms |
376 KB |
Output is correct |
13 |
Correct |
2 ms |
376 KB |
Output is correct |
14 |
Correct |
2 ms |
256 KB |
Output is correct |
15 |
Correct |
2 ms |
256 KB |
Output is correct |
16 |
Correct |
2 ms |
256 KB |
Output is correct |
17 |
Correct |
2 ms |
376 KB |
Output is correct |
18 |
Correct |
2 ms |
380 KB |
Output is correct |
19 |
Correct |
2 ms |
376 KB |
Output is correct |
20 |
Correct |
2 ms |
256 KB |
Output is correct |
21 |
Correct |
2 ms |
256 KB |
Output is correct |
22 |
Correct |
2 ms |
376 KB |
Output is correct |
23 |
Correct |
2 ms |
256 KB |
Output is correct |
24 |
Correct |
2 ms |
376 KB |
Output is correct |
25 |
Correct |
2 ms |
376 KB |
Output is correct |
26 |
Correct |
2 ms |
256 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
19 ms |
2908 KB |
Output is correct |
2 |
Correct |
19 ms |
2936 KB |
Output is correct |
3 |
Correct |
30 ms |
4080 KB |
Output is correct |
4 |
Correct |
22 ms |
3676 KB |
Output is correct |
5 |
Correct |
18 ms |
2680 KB |
Output is correct |
6 |
Correct |
19 ms |
2712 KB |
Output is correct |
7 |
Correct |
14 ms |
2680 KB |
Output is correct |
8 |
Correct |
14 ms |
2684 KB |
Output is correct |
9 |
Correct |
22 ms |
4080 KB |
Output is correct |
10 |
Correct |
21 ms |
3696 KB |
Output is correct |
11 |
Correct |
21 ms |
3696 KB |
Output is correct |
12 |
Correct |
22 ms |
3824 KB |
Output is correct |
13 |
Correct |
27 ms |
3572 KB |
Output is correct |
14 |
Correct |
22 ms |
4080 KB |
Output is correct |
15 |
Correct |
19 ms |
3192 KB |
Output is correct |
16 |
Correct |
18 ms |
3064 KB |
Output is correct |
17 |
Correct |
21 ms |
3320 KB |
Output is correct |
18 |
Correct |
22 ms |
3320 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
26 ms |
3840 KB |
Output is correct |
2 |
Correct |
26 ms |
3832 KB |
Output is correct |
3 |
Execution timed out |
4013 ms |
4464 KB |
Time limit exceeded |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
41 ms |
12024 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |