Submission #7518

#TimeUsernameProblemLanguageResultExecution timeMemory
7518jalmal배열 탈출 (GA8_array)C++98
100 / 100
828 ms39936 KiB
#include <stdio.h>

int N, arr[2230][2230], tab[2230][2230];

void upd(int x, int y)
{
    int m = 2147483647;
    if(x > 1)
    {
        if(arr[y][x] < arr[y][x-1])
        {
            if(tab[y][x-1] < m) m = tab[y][x-1];
        }
        else
        {
            if(tab[y][x-1] + arr[y][x] - arr[y][x-1] + 1 < m) m = tab[y][x-1] + arr[y][x] - arr[y][x-1] + 1;
        }
    }
    if(y > 1)
    {
        if(arr[y][x] < arr[y-1][x])
        {
            if(tab[y-1][x] < m) m = tab[y-1][x];
        }
        else
        {
            if(tab[y-1][x] + arr[y][x] - arr[y-1][x] + 1 < m) m = tab[y-1][x] + arr[y][x] - arr[y-1][x] + 1;
        }
    }
    tab[y][x] = m;
}

int main()
{
    //freopen("input.txt", "r",  stdin);
    int i, j;

    scanf("%d", &N);
    for(i = 1; i <= N; i ++) for(j = 1; j <= N; j ++) scanf("%d", &arr[i][j]);

    for(i = 2; i <= N; i ++)
    {
        int x, y;
        for(x = 1, y = i; x <= i; x ++, y --)
        {
            upd(x, y);
        }
    }

    for(i = 2; i <= N; i ++)
    {
        int x, y;
        for(x = i, y = N; x <= N; x ++, y --)
        {
            upd(x, y);
        }
    }

    printf("%d", tab[N][N]);

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...