제출 #1172168

#제출 시각아이디문제언어결과실행 시간메모리
1172168ivazivaRestore Array (RMI19_restore)C++20
100 / 100
437 ms800 KiB
#include <bits/stdc++.h> using namespace std; #define MAXN 5001 int n,m; vector<pair<int,pair<int,int>>> edges; int dist[MAXN]; int main() { cin>>n>>m; for (int i=1;i<=n;i++) {edges.push_back({0,{i,i-1}});edges.push_back({1,{i-1,i}});} for (int i=1;i<=m;i++) { int l,r,k,t;cin>>l>>r>>k>>t;l++;r++; if (t==0) edges.push_back({k*(-1),{r,l-1}}); else edges.push_back({k-1,{l-1,r}}); } for (int i=1;i<=n;i++) dist[i]=INT_MAX; dist[0]=0;int promena=-1; for (int br=0;br<n;br++) { promena=-1; for (pair<int,pair<int,int>> edge:edges) { int w=edge.first,node1=edge.second.first,node2=edge.second.second; if (dist[node1]==INT_MAX) continue; if (dist[node2]>dist[node1]+w) {dist[node2]=dist[node1]+w;promena=node2;} } } if (promena!=-1) {cout<<-1<<endl;return 0;} for (int i=1;i<=n;i++) { if (dist[i]==dist[i-1]) cout<<1<<" "; else cout<<0<<" "; } cout<<endl;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...