Submission #548171

#TimeUsernameProblemLanguageResultExecution timeMemory
548171CommandMasterRestore Array (RMI19_restore)C++17
100 / 100
347 ms936 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll int
#define vll vector<ll>
#define vvll vector<vll>
#define pll pair<ll,ll>

int main() {
    ll n, m;
    cin >> n >> m;
    vector<vector<pll>> graph(n+1);
    for (ll i = 0; i < n; i++) graph[i].push_back({i+1, 1}), graph[i+1].push_back({i, 0});
    for (ll i = 0; i < m; i++) {
        ll l, r, k, v;
        cin >> l >> r >> k >> v;
        k--;
        if (v == 1) {
            // cout << l << ' ' << r+1 << ' ' << -((r-l+1)-k) << endl;
            graph[r+1].push_back({l, k-(r-l+1)});
        } else {
            // cout << r+1 << ' ' << l << ' ' << (r-l+1)-k-1 << endl;
            graph[l].push_back({r+1, (r-l+1)-k-1});
        }
    }
    vll dist(n+1, 1e9);
    dist[0] = 0;
    bool changed = true;
    for (ll i = 0; i < 2500; i++) {
        // for (ll j = 0; j < n+1; j++) cout << dist[j] << ' ';
        // cout << endl;
        changed = false;
        for (ll j = 0; j < n+1; j++) {
            for (pll e : graph[j]) {
                if (dist[e.first] > dist[j] + e.second) {
                    changed = true;
                    dist[e.first] = dist[j] + e.second;
                }
            }
        }
        if (!changed) break;
    }
    if (changed) {
        cout << -1 << endl;
        return 0;
    }
    for (ll i = 0; i < n; i++) cout << dist[i+1] - dist[i] << ' ';
    cout << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...