제출 #1306963

#제출 시각아이디문제언어결과실행 시간메모리
1306963SSKMFRestore Array (RMI19_restore)C++20
13 / 100
141 ms856 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); distanta[indice] = 1000000000; } while (numar_muchii--) { int stanga , dreapta , termen , valoare; cin >> stanga >> dreapta >> termen >> valoare; stanga++; dreapta++; if (valoare == 0) { adiacenta[stanga - 1].emplace_back(dreapta , dreapta - stanga + 1 - termen); } else { adiacenta[dreapta].emplace_back(stanga - 1 , termen - 1 - (dreapta - stanga + 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] << ' '; } } 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...