이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "grader.h"
typedef int ll;
bool v = false;
void f(ll x1, ll y1, ll x2, ll y2, ll xd, ll yd, ll z)
{
if(x1 > x2 || y1 > y2) return;
if(xd == -1 && yd == -1)
{
ll t = Measure(x1, y2);
if(t == z)
{
v = true;
Pinpoint(x1, y2);
}
else if(t < z)
{
f(x1 + 1, y1, x2, y2, xd, yd, z);
}
else
{
f(x1, y1, x2, y2 - 1, xd, yd, z);
}
}
else if(xd == -1 && yd == 1)
{
ll t = Measure(x2, y2);
if(t == z)
{
v = true;
Pinpoint(x2, y2);
}
else if(t < z)
{
f(x1, y1, x2, y2 - 1, xd, yd, z);
}
else
{
f(x1, y1, x2 - 1, y2, xd, yd, z);
}
}
else if(xd == 1 && yd == 1)
{
ll t = Measure(x2, y1);
if(t == z)
{
v = true;
Pinpoint(x2, y1);
}
else if(t < z)
{
f(x1, y1, x2 - 1, y2, xd, yd, z);
}
else
{
f(x1, y1 + 1, x2, y2, xd, yd, z);
}
}
else
{
ll t = Measure(x1, y1);
if(t == z)
{
v = true;
Pinpoint(x1, y1);
}
else if(t < z)
{
f(x1, y1 + 1, x2, y2, xd, yd, z);
}
else
{
f(x1 + 1, y1, x2, y2, xd, yd, z);
}
}
}
void Rescue(ll R, ll C, ll RS, ll CS, ll X)
{
if(!v) f(1, 1, RS - 1, CS, -1, -1, X);
if(!v) f(1, CS + 1, RS, C, -1, 1, X);
if(!v) f(RS + 1, CS, R, C, 1, 1, X);
if(!v) f(RS, 1, R, CS - 1, 1, -1, X);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |