Submission #1300892

#TimeUsernameProblemLanguageResultExecution timeMemory
1300892NewtonabcRestore Array (RMI19_restore)C++20
100 / 100
437 ms1000 KiB
#include<bits/stdc++.h> #define tpp tuple<int,int,int,int> #define ll long long using namespace std; const ll MOD=1e9+7; const int N=5e5+10; int d[N]; //d[i] keeps number 0 from 1 to i //cal(l,r) is d[r+1]-d[l] vector<tuple<int,int,int>> edge; void solve(){ int n,m; cin>>n >>m; for(int i=0;i<m;i++){ int l,r,w,t; cin>>l >>r >>w >>t; if(t==0) edge.push_back({r+1,l,-w}); else edge.push_back({l,r+1,w-1}); } for(int i=0;i<n;i++) edge.push_back({i,i+1,1}),edge.push_back({i+1,i,0}); d[0]=0; for(int i=1;i<=n;i++) d[i]=INT_MAX; bool st; //n+1 node for(int i=0;i<n+1;i++){ st=0; for(auto [u,v,w]:edge){ if(d[u]==INT_MAX) continue; if(d[u]+w<d[v]){ d[v]=d[u]+w; st=1; } } } // for(int i=0;i<=n;i++) cout<<d[i] <<" "; // cout<<"\n"; if(st==1){ cout<<-1; return; } for(int i=0;i<n;i++){ if(d[i+1]-d[i]==1) cout<<0 <<" "; else cout<<1 <<" "; } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int t=1; //cin>>t; while(t--){ solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...