Submission #1306971

#TimeUsernameProblemLanguageResultExecution timeMemory
1306971SSKMFRestore Array (RMI19_restore)C++20
100 / 100
191 ms936 KiB
#include <bits/stdc++.h> using namespace std; vector < pair <int , int> > adiacenta[5001]; int distanta[5001]; inline void Solve () { int numar_noduri , numar_muchii; cin >> numar_noduri >> numar_muchii; for (int indice = 1 ; indice <= numar_noduri ; indice++) { adiacenta[indice - 1].emplace_back(indice , 1); adiacenta[indice].emplace_back(indice - 1 , 0); distanta[indice] = 1000000000; } while (numar_muchii--) { int stanga , dreapta , termen , valoare; cin >> stanga >> dreapta >> termen >> valoare; stanga++; dreapta++; if (valoare == 0) { adiacenta[dreapta].emplace_back(stanga - 1 , -termen); } else { adiacenta[stanga - 1].emplace_back(dreapta , termen - 1); } } for (int ramas = numar_noduri - 1 ; ramas ; ramas--) { for (int nod = 0 ; nod <= numar_noduri ; nod++) { for (auto& vecin : adiacenta[nod]) { distanta[vecin.first] = min(distanta[vecin.first] , distanta[nod] + vecin.second); } } } for (int nod = 0 ; nod <= numar_noduri ; nod++) { for (auto& vecin : adiacenta[nod]) { if (distanta[vecin.first] > distanta[nod] + vecin.second) { cout << "-1"; return; } } } for (int indice = 1 ; indice <= numar_noduri ; indice++) { cout << ((distanta[indice] - distanta[indice - 1]) ^ 1) << ' '; } } int main () { ios :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int numar_teste = 1; // cin >> numar_teste; while (numar_teste--) { Solve(); } 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...