#include "wombats.h"
#include <algorithm>
#include <iostream>
#include <numeric>
#include <vector>
typedef long long llong;
const int MAXR = 5000 + 10;
const int MAXC = 100 + 10;
const int INF = 2e9;
int r, c;
int costLeft[MAXR][MAXC];
int costDown[MAXR][MAXC];
int dp[MAXC][MAXR][MAXC];
int prefix[MAXR];
int suffix[MAXR];
void calcDP()
{
for (int end = 1 ; end <= c ; ++end)
{
int sum = 0;
dp[end][r][col] = 0;
for (int col = end - 1 ; col >= 1 ; col--)
{
sum += costLeft[r][col];
dp[end][r][col] = sum;
}
for (int col = end + 1 ; col <= c ; col++)
{
sum += costLeft[r][col - 1];
dp[end][r][col] = sum;
}
for (int row = r - 1 ; row >= 1 ; --row)
{
prefix[0] = suffix[c + 1] = INF;
for (int col = 1 ; col <= c ; ++col)
{
prefix[col] = std::min(prefix[col - 1] + costLeft[row][col - 1], dp[end][row + 1][col] + costDown[row][col]);
}
for (int col = c ; col >= 1 ; --col)
{
suffix[col] = std::min(suffix[col + 1] + costLeft[row][col], dp[end][row + 1][col] + costDown[row][col]);
}
for (int col = 1 ; col <= c ; ++col)
{
dp[end][row][col] = std::min(prefix[col], suffix[col]);
}
}
}
}
void init(int R, int C, int H[5000][200], int V[5000][200])
{
r = R;
c = C;
for (int i = 1 ; i <= r ; ++i)
{
for (int j = 1 ; j < c ; ++j)
{
costLeft[i][j] = H[i - 1][j - 1];
}
}
for (int i = 1 ; i < r ; ++i)
{
for (int j = 1 ; j <= c ; ++j)
{
costDown[i][j] = V[i - 1][j - 1];
}
}
calcDP();
}
void changeH(int P, int Q, int W)
{
costLeft[P + 1][Q + 1] = W;
calcDP();
}
void changeV(int P, int Q, int W)
{
costDown[P + 1][Q + 1] = W;
calcDP();
}
int escape(int V1, int V2)
{
V1++;
V2++;
return dp[V2][1][V1];
}
Compilation message
grader.c: In function 'int main()':
grader.c:15:6: warning: variable 'res' set but not used [-Wunused-but-set-variable]
15 | int res;
| ^~~
wombats.cpp: In function 'void calcDP()':
wombats.cpp:24:20: error: 'col' was not declared in this scope
24 | dp[end][r][col] = 0;
| ^~~