제출 #940558

#제출 시각아이디문제언어결과실행 시간메모리
940558MackerRestore Array (RMI19_restore)C++17
0 / 100
244 ms1200 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define int ll typedef pair<int, int> pii; #define all(v) v.begin(), v.end() #define FOR(i, n) for (int i = 0; i < n; i++) #define inf LLONG_MAX/2 #define fi first #define se second //#pragma GCC optimize("Ofast") //#pragma GCC target("avx2") vector<vector<pii>> adj; vector<int> dist; int n; bool SSSP(int s){ dist.assign(n, inf); dist[s] = 0; int upd = -1; FOR(it, n){ upd = -1; FOR(a, n) for (auto &[b, c] : adj[a]) { if(dist[a] == inf) continue; if(dist[b] > dist[a] + c){ dist[b] = dist[a] + c; upd = b; } } } if(upd != -1) return false; else return true; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); int m; cin >> n >> m; adj.resize(n + 2); FOR(i, m){ int l, r, k, val; cin >> l >> r >> k >> val; r++; if(val == 0){ adj[l].push_back({r, (r - l) - k}); } else{ adj[r].push_back({l, k - r + l + 1}); } } FOR(i, n){ adj[i].push_back({i + 1, 1}); adj[i + 1].push_back({i, 0}); } n++; if(!SSSP(0)){ cout << -1 << endl; } else{ FOR(i, n-1){ if(dist[i] < dist[i + 1]) cout << "1"; else cout << "0"; cout << " \n"[i == n - 2]; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...