Submission #198592

#TimeUsernameProblemLanguageResultExecution timeMemory
198592AkashiRestore Array (RMI19_restore)C++14
100 / 100
382 ms952 KiB
#include <bits/stdc++.h> using namespace std; const int INF = 1e9; int n, m; struct edge{ int x, y, c; }; vector <edge> v; void add_edge(int x, int y, int c){ v.push_back({x, y, c}); } int d[5005]; queue <int> q; bool bellman(){ for(int i = 1; i <= n ; ++i) d[i] = INF; d[0] = 0; for(int i = 1; i <= n + 1 ; ++i) for(auto it : v) d[it.y] = min(d[it.y], d[it.x] + it.c); for(auto it : v) if(d[it.y] > d[it.x] + it.c) return 0; return 1; } int main(){ scanf("%d%d", &n, &m); for(int i = 1; i <= n ; ++i){ add_edge(i - 1, i, 1); add_edge(i, i - 1, 0); } int l, r, k, val; for(int i = 1; i <= m ; ++i){ scanf("%d%d%d%d", &l, &r, &k, &val); ++l; ++r; if(val == 1) add_edge(r, l - 1, (k - 1) - (r - l + 1)); else add_edge(l - 1, r, (r - l + 1) - k); } bool ok = bellman(); if(!ok) printf("-1"); else{ for(int i = 1; i <= n ; ++i) printf("%d ", d[i] - d[i - 1]); } return 0; }

Compilation message (stderr)

restore.cpp: In function 'int main()':
restore.cpp:32:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d", &n, &m);
  ~~~~~^~~~~~~~~~~~~~~~
restore.cpp:40:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d%d%d", &l, &r, &k, &val);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...