Submission #1172168

#TimeUsernameProblemLanguageResultExecution timeMemory
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...