Submission #1288127

#TimeUsernameProblemLanguageResultExecution timeMemory
1288127domiRestore Array (RMI19_restore)C++20
100 / 100
274 ms1356 KiB
#include <bits/stdc++.h> #define int long long #define fi first #define se second #define sz(a) (int)((a).size()) #define all(a) (a).begin(), (a).end() #define lsb(x) (x & (-x)) #define vi vector<int> #define YES { cout << "YES" << endl; return; } #define NO { cout << "NO" << endl; return; } using ll = long long; using pii = std::pair<int, int>; const int NMAX = 5e3; using namespace std; vector<array<int, 3>>edges; int lowsum[NMAX + 5], n, m; bool bellman_ford() { fill(lowsum, lowsum + n + 1, INT_MAX); lowsum[0] = 0; int lst = -1; for (int i = 0; i <= n; ++i) { lst = -1; for (auto &[u, v, w] : edges) { if (lowsum[u] != INT_MAX && lowsum[u] + w < lowsum[v]) { lowsum[v] = lowsum[u] + w; lst = v; } } if (lst == -1)break; } return (lst == -1); } signed main() { cin.tie(nullptr)->sync_with_stdio(false); cin >> n >> m; for (int i = 0, l, r, k, val; i < m; ++i) { cin >> l >> r >> k >> val; ++l, ++r; if (val == 0) edges.push_back({l - 1, r, (r - l + 1) - k}); if (val == 1) edges.push_back({r, l - 1, (k - 1) - (r - l + 1)}); } for (int i = 1; i <= n; ++i) { edges.push_back({i, i - 1, 0}); edges.push_back({i - 1, i, 1}); } if (!bellman_ford()) { cout << "-1\n"; exit(0); } for (int i = 1; i <= n; ++i) cout << lowsum[i] - lowsum[i - 1] << " \n"[i == n]; 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...