Submission #555864

# Submission time Handle Problem Language Result Execution time Memory
555864 2022-05-01T18:08:52 Z mihnea_tudor Restore Array (RMI19_restore) C++14
7 / 100
600 ms 744 KB
#include <bits/stdc++.h>

#define NMAX ((int)5e3)
#define INF  ((int)1e9)

using namespace std;

int n, m;
vector<pair<int, int>> a[NMAX + 1];

int dist[NMAX + 1];
int pred[NMAX + 1];
bool in_queue[NMAX + 1];
int cnt_in_queue[NMAX + 1];

bool bellmanford() {
    for (int i = 1; i <= n; ++i) {
        dist[i] = INF;
        pred[i] = -1;
    }
 
    dist[0] = 0;
 
    for (int cnt = 0; cnt < n; ++cnt) {
        // Check all edges
        for (int node = 0; node <= n; ++node) {
            for (auto it = a[node].begin(); it != a[node].end(); ++it) {
                if (dist[node] + it->second < dist[it->first]) {
                    dist[it->first] = dist[node] + it->second;
                    pred[it->first] = node;
                }
            }
        }
    }
 
    for (int node = 0; node <= n; ++node) {
        for (auto it = a[node].begin(); it != a[node].end(); ++it) {
            if (dist[node] + it->second < dist[it->first]) {
                return false;
            }
        }
    }
 
    return true;
}

void add_constraint(int left, int right, int k, int val) {
    if (val == 0) {
        a[left - 1].push_back({right, (right - left + 1) - k});
    } else {
        a[right].push_back({left - 1, -((right - left + 1) - (k - 1))});
    }
}

int main(void) {
    scanf("%d %d", &n, &m);
    for (int i = 0; i < m; ++i) {
        int left, right, k, val;
        scanf("%d %d %d %d", &left, &right, &k, &val);

        ++left; ++right;
        add_constraint(left, right, k, val);
    }

    for (int i = 1; i <= n; ++i) {
        a[i - 1].push_back({i, 1});
        a[i].push_back({i - 1, 0});
    }

    if (!bellmanford()) {
        printf("-1\n");
        return 0;
    }

    for (int i = 1; i <= n; ++i) {
        printf("%d ", dist[i] - dist[i - 1]);
    }

    printf("\n");

    return 0;
}

Compilation message

restore.cpp: In function 'int main()':
restore.cpp:56:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   56 |     scanf("%d %d", &n, &m);
      |     ~~~~~^~~~~~~~~~~~~~~~~
restore.cpp:59:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   59 |         scanf("%d %d %d %d", &left, &right, &k, &val);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 0 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 0 ms 340 KB Output is correct
9 Correct 0 ms 340 KB Output is correct
10 Correct 0 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 261 ms 724 KB Output is correct
2 Correct 256 ms 732 KB Output is correct
3 Correct 259 ms 744 KB Output is correct
4 Correct 256 ms 724 KB Output is correct
5 Execution timed out 694 ms 724 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 261 ms 724 KB Output is correct
2 Correct 256 ms 732 KB Output is correct
3 Correct 259 ms 744 KB Output is correct
4 Correct 256 ms 724 KB Output is correct
5 Execution timed out 694 ms 724 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 0 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 0 ms 340 KB Output is correct
9 Correct 0 ms 340 KB Output is correct
10 Correct 0 ms 340 KB Output is correct
11 Correct 261 ms 724 KB Output is correct
12 Correct 256 ms 732 KB Output is correct
13 Correct 259 ms 744 KB Output is correct
14 Correct 256 ms 724 KB Output is correct
15 Execution timed out 694 ms 724 KB Time limit exceeded
16 Halted 0 ms 0 KB -