6460 2023. 12. 02 14:36:11 111 Jegesmedve (50) cpp17 Elfogadva 50/50 237ms 5436 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define double long double

#define pii pair<int, int>

#define MOD 20200111

signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
#ifdef CB
	freopen("be2.txt", "r", stdin);
//	freopen("out.txt", "w", stdout);
#endif
	int N, M;
	cin >> N >> M;
	int i0, j0;
	int a[100][100];
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < M; j++) {
			cin >> a[i][j];
			if (a[i][j] == -1) {
				a[i][j] = INT_MAX;
				i0 = i;
				j0 = j;
			}
		}
	}
	int b[100][100];
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < M; j++) {
			cin >> b[i][j];
		}
	}
	int v[100][100] {};
	auto dfs = [&](auto dfs, int i, int j, int x) {
		if (i < 0 || i >= N || j < 0 || j >= M || v[i][j] >= x) {
			return;
		}
		v[i][j] = min(x, a[i][j]);
		dfs(dfs, i + 1, j, v[i][j]);
		dfs(dfs, i - 1, j, v[i][j]);
		dfs(dfs, i, j + 1, v[i][j]);
		dfs(dfs, i, j - 1, v[i][j]);
	};
	dfs(dfs, i0, j0, INT_MAX);
	map<int, int> m;
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < M; j++) {
			m[v[i][j]] += b[i][j];
		}
	}
	int ans = 0;
	for (auto p : m) {
		ans = min(p.first, ans + p.second);
	}
	cout << ans + 1 << endl;
	return 0;
}

Részfeladat Összpont Teszt Verdikt Idő Memória
base 50/50
1 Elfogadva 0/0 3ms 2316 KiB
2 Elfogadva 0/0 3ms 2584 KiB
3 Elfogadva 3/3 3ms 2728 KiB
4 Elfogadva 3/3 3ms 3092 KiB
5 Elfogadva 3/3 3ms 3228 KiB
6 Elfogadva 4/4 4ms 3316 KiB
7 Elfogadva 3/3 3ms 3552 KiB
8 Elfogadva 3/3 3ms 3636 KiB
9 Elfogadva 3/3 3ms 3696 KiB
10 Elfogadva 4/4 3ms 3672 KiB
11 Elfogadva 4/4 14ms 4064 KiB
12 Elfogadva 4/4 8ms 4096 KiB
13 Elfogadva 4/4 4ms 4000 KiB
14 Elfogadva 4/4 100ms 4812 KiB
15 Elfogadva 4/4 158ms 5252 KiB
16 Elfogadva 4/4 237ms 5436 KiB