Submission #1020761

# Submission time Handle Problem Language Result Execution time Memory
1020761 2024-07-12T09:32:14 Z mansur Shortcut (IOI16_shortcut) C++17
Compilation error
0 ms 0 KB
#include "railroad.h"
#include <bits/stdc++.h>

using namespace std;

#define rall(s) s.rbegin(), s.rend()
#define all(s) s.begin(), s.end()
#define sz(s) (int)s.size()
#define s second 
#define f first 

using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;

const ll inf = 1e18, N = 1e6;

vector<int> ord, was(N), g[N];

void dfs(int u) {
    was[u] = 1;
    for (int to: g[u]) {
        if (!was[to]) dfs(to);
    }
    ord.push_back(u);
}

long long plan_roller_coaster(std::vector<int> s, std::vector<int> t) {
    int n = sz(s);
    if (n <= 16) {
        ll dp[1 << n][n];
        for (int msk = 0; msk < (1 << n); msk++) {
            for (int i = 0; i < n; i++) {
                dp[msk][i] = inf;
            }
        }
        for (int i = 0; i < n; i++) dp[1 << i][i] = 0;
        for (int msk = 1; msk < (1 << n); msk++) {
            for (int i = 0; i < n; i++) {
                if (msk >> i & 1) {
                    for (int j = 0; j < n; j++) {
                        if (msk >> j & 1) continue;
                        int msk1 = msk + (1 << j);
                        dp[msk1][j] = min(dp[msk1][j], dp[msk][i] + max(0, t[i] - s[j]));
                    }
                }
            }
        }
        ll ans = inf;
        for (int i = 0; i < n; i++) ans = min(ans, dp[(1 << n) - 1][i]);
        return ans;
    }
    vector<pii> a;
    for (int i = 0; i < n; i++) a.push_back({t[i], s[i]});
    sort(all(s));
    for (int i = 0; i < n; i++) {
        g[i + n].push_back(i);
        if (i) g[i + n].push_back(i + n - 1);
        int p = upper_bound(all(a), {s[i], 0}) - a.begin() - 1;
        if (p >= 0) g[p + n - 1].push_back(i);
    }
    for (int i = 0; i < n; i++) {
        if (!was[i]) dfs(i);
    }
    reverse(all(ord));
    int lst = ord[0];
    for (int i = 1; i < sz(ord); i++) {
        if (ord[i] >= n) continue;
        if (a[ord[i]].s < a[lst].f) return 1;  
        lst = ord[i];
    }
    return 0;
}

Compilation message

shortcut.cpp:1:10: fatal error: railroad.h: No such file or directory
    1 | #include "railroad.h"
      |          ^~~~~~~~~~~~
compilation terminated.