Submission #484846

#TimeUsernameProblemLanguageResultExecution timeMemory
484846blueRestore Array (RMI19_restore)C++17
100 / 100
355 ms972 KiB
#include <iostream> #include <vector> using namespace std; using vi = vector<int>; #define pb push_back const int INF = 1'000'000; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int N, M; cin >> N >> M; vi u, v, w; for(int j = 1; j <= M; j++) { int l, r, k, val; cin >> l >> r >> k >> val; l++; r++; if(val == 0) { u.pb(l-1); v.pb(r); w.pb(r-l+1 - k); } else { u.pb(r); v.pb(l-1); w.pb(-(r-l+2 - k)); } } for(int i = 0; i < N; i++) { u.pb(i); v.pb(i+1); w.pb(1); u.pb(i+1); v.pb(i); w.pb(0); } vi sp(1+N, INF); sp[0] = 0; for(int q = 1; q <= N; q++) { for(int j = 0; j < 2*N+M; j++) { sp[v[j]] = min(sp[v[j]], sp[u[j]] + w[j]); } } bool works = 1; for(int j = 0; j < 2*N+M; j++) if(sp[v[j]] > sp[u[j]] + w[j]) works = 0; // cerr << u[0] << ' '<< v[0] << ' ' << w[0] << '\n'; if(!works) cout << "-1\n"; else { for(int i = 1; i <= N; i++) { cout << (sp[i] != sp[i-1]) << ' '; } cout << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...