제출 #503134

#제출 시각아이디문제언어결과실행 시간메모리
503134mathking1021산악 구조대 (JOI13_mountain)C++17
0 / 100
7 ms860 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...