This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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... |