Submission #1131443

#TimeUsernameProblemLanguageResultExecution timeMemory
1131443TraianDanciuRestore Array (RMI19_restore)C++20
0 / 100
3 ms324 KiB
// sp[i] = cate 0-uri sunt de la 1 la i. Din restrictiile alea deducem // cate o conditie // 0. Daca value=0, inseamna ca sunt cel putin k 0-uri pe intervalul // ala deci sp[r+1] >= sp[l]+k // 1. Daca value=1, inseamna ca sunt cel mult k-1 0-uri pe intervalul // la deci sp[l] >= sp[r+1]-(k-1) // Si voi face un graf orientat, in care o muchie de la i la j de cost // c va reprezenta faptul ca sp[i] >= sp[j]+c // Voi face un brut in care voi calcula valoarea maxiima a lui sp[i], // ma voi opri atunci cand nu se va mai modifica nimic #include <stdio.h> const int MAXN = 5'000; const int MAXM = 10'000; int n, m, sp[MAXN + 1]; struct Edge { int u, v, w; } edges[MAXM]; void readGraph() { int i, l, r, k, value; scanf("%d%d", &n, &m); for(i = 0; i < m; i++) { scanf("%d%d%d%d", &l, &r, &k, &value); if(value == 0) { edges[i] = {r + 1, l, k}; } else { edges[i] = {l, r + 1, -(k - 1)}; } } } void computeAnswer() { int gata, i; gata = 0; while(!gata) { gata = 1; for(i = 0; i < m; i++) { if(sp[edges[i].u] < sp[edges[i].v] + edges[i].w) { gata = 0; sp[edges[i].u] = sp[edges[i].v] + edges[i].w; } } for(i = 0; i <= n; i++) { if(sp[i] > i) { gata = 1; } } } } void writeAnswer() { int i, ok = 1; for(i = 1; i <= n; i++) { if(sp[i] > i) { ok = 0; } } if(ok) { for(i = 1; i <= n; i++) { printf("%d ", sp[i] == sp[i - 1]); } fputc('\n', stdout); } else { printf("-1\n"); } } int main() { readGraph(); computeAnswer(); writeAnswer(); return 0; }

Compilation message (stderr)

restore.cpp: In function 'void readGraph()':
restore.cpp:28:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   28 |   scanf("%d%d", &n, &m);
      |   ~~~~~^~~~~~~~~~~~~~~~
restore.cpp:30:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   30 |     scanf("%d%d%d%d", &l, &r, &k, &value);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...