제출 #1341749

#제출 시각아이디문제언어결과실행 시간메모리
1341749goats_9Restore Array (RMI19_restore)C++20
0 / 100
131 ms808 KiB
/* Author: goats_9 */

#include <bits/stdc++.h>
using namespace std;

using ll = long long;
constexpr int INF = 1e9;

int main() {
	cin.tie(0)->sync_with_stdio(0);
	int n, m;
	cin >> n >> m;
	vector<vector<pair<int, int>>> g(n + 1);
	for (int i = 0; i < m; i++) {
		int l, r, k, v;
		cin >> l >> r >> k >> v;
		++r;
		if (v == 0) {
			g[r].emplace_back(l, r - l - k);
		} else {
			g[l].emplace_back(r, k - r + l - 1);
		}
	}
	for (int i = 1; i <= n; i++) g[i - 1].emplace_back(i, 0);
	vector<int> dis(n + 1, INF);
	dis[0] = 0;
	for (int z = 0; z <= n; z++) {
		for (int i = 0; i <= n; i++) {
			for (auto [j, w] : g[i]) {
				dis[j] = min(dis[j], w + dis[i]);
			}
		}
	}
	bool ok = true;
	for (int i = 0; i <= n; i++) {
		for (auto [j, w] : g[i]) {
			if (dis[i] + w < dis[j]) ok = false;
		}
	}
	if (!ok) return cout << -1, 0;
	for (int i = 1; i <= n; i++) cout << dis[i - 1] - dis[i] << ' ';
	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...