# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
60714 | Eae02 | 선물상자 (IOI15_boxes) | C++14 | 2 ms | 376 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "boxes.h"
#include <bits/stdc++.h>
#include <set>
long long delivery(int numTeams, int capacity, int numSections, int p[])
{
std::sort(p, p + numTeams);
auto DistTo0 = [&] (int x)
{
return std::min(x, numSections - x);
};
auto mid = std::lower_bound(p, p + numTeams, numSections / 2);
int numL = mid - p;
int numR = numTeams - numL;
if (capacity == numTeams)
{
if (numL == 0)
return DistTo0(p[0]) * 2;
if (numR == 0)
return DistTo0(p[numTeams - 1]) * 2;
return numSections;
}
int doneL = 0;
int doneR = 0;
long long sec = 0;
while ((doneL + doneR) < numTeams)
{
int boxes = capacity;
auto Give = [&](int x, int numToGive)
{
if (x < numSections)
numL -= numToGive;
else
numR -= numToGive;
boxes -= numToGive;
};
if (numL > numR)
{
sec += DistTo0(p[doneL]);
while (true)
{
int oldPos = p[doneL];
int numToGive = 0;
while (numToGive < boxes && p[doneL + numToGive] == oldPos)
numToGive++;
Give(oldPos, numToGive);
doneL += numToGive;
if (boxes <= 0 || (doneL + doneR) >= numTeams)
{
sec += DistTo0(oldPos);
break;
}
sec += std::abs(p[doneL] - oldPos);
}
}
else
{
sec += DistTo0(p[numTeams - doneR - 1]);
while (true)
{
int oldPos = p[numTeams - doneR - 1];
int numToGive = 0;
while (numToGive < boxes && p[numTeams - doneR - numToGive - 1] == oldPos)
numToGive++;
Give(oldPos, numToGive);
doneR += numToGive;
if (boxes <= 0 || (doneL + doneR) >= numTeams)
{
sec += DistTo0(oldPos);
break;
}
sec += std::abs(p[numTeams - doneR - 1] - oldPos);
}
}
}
return sec;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |