Submission #1146629

#TimeUsernameProblemLanguageResultExecution timeMemory
1146629mannshah1211Restore Array (RMI19_restore)C++20
100 / 100
277 ms1284 KiB
#include <bits/stdc++.h> using namespace std; #ifdef LOCAL #include "deb.h" #else #define debug(...) #endif const int inf = 1e9; void solve() { int n, m; cin >> n >> m; vector<vector<pair<int, int>>> g(n + 1); vector<tuple<int, int, int>> edges(m); for (int i = 0; i < n; i++) { // p[i + 1] - p[i] >= 0 // p[i + 1] - p[i] <= 1 g[i + 1].emplace_back(i, 0); g[i].emplace_back(i + 1, 1); edges.emplace_back(i + 1, i, 0); edges.emplace_back(i, i + 1, 1); } for (int i = 0; i < m; i++) { int l, r, k, v; cin >> l >> r >> k >> v; ++l; ++r; if (v == 0) { g[r].emplace_back(l - 1, -k); edges.emplace_back(r, l - 1, -k); } else { g[l - 1].emplace_back(r, k - 1); edges.emplace_back(l - 1, r, k - 1); } } vector<int> d(n + 1, inf); d[0] = 0; for (int i = 0; i < n + 2; i++) { for (auto [u, v, w] : edges) { d[v] = min(d[v], d[u] + w); } } bool neg = false; for (auto [u, v, w] : edges) { if (d[v] > d[u] + w) { neg = true; } } if (neg) { cout << -1 << '\n'; return; } for (int i = 1; i <= n; i++) { cout << 1 - d[i] + d[i - 1] << " \n"[i == n]; } } int main() { ios::sync_with_stdio(false); cin.tie(0); int t = 1; // cin >> t; while (t--) { solve(); } 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...