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 <bits/stdc++.h>
using namespace std;
#define ll long long
int di[2] = {0, 1};
int dj[2] = {1, 0};
int main() {
	ios_base::sync_with_stdio(0), cin.tie(0);
	int n, m;
	cin >> n >> m;
	ll dist[n][m], a[n], b[m];
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			dist[i][j] = 1e18;
		}
	}
	for (int i = 0; i < n; i++) {
		cin >> a[i];
	}
	for (int i = 0; i < m; i++) {
		cin >> b[i];
	}
	auto valid = [&] (int i, int j) {
		return i < n && j < m;
	};
	dist[0][0] = 0;
	priority_queue<array<ll, 3>> pq;
	pq.push({0, 0, 0});
	while (pq.size()) {
		auto [c, i, j] = pq.top();
		pq.pop();
		c *= -1;
		for (int k = 0; k < 2; k++) {
			ll newi = i + di[k];
			ll newj = j + dj[k];
			ll newc = c + (!di[k]) * a[i] + (!dj[k]) * b[j];
			if (valid(newi, newj) && newc < dist[newi][newj]) {
				dist[newi][newj] = newc;
				pq.push({-newc, newi, newj});
			}
		}
	}
	cout << dist[n - 1][m - 1] << '\n';
	return 0;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |