#include "railroad.h"
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int INF = 1e15;
const int maxn = 4e5 + 5;
int sz;
vector<int> vals = {-INF};
int dc(int x) {return lower_bound(vals.begin(), vals.end(), x) - vals.begin();}
int n;
vector<int> adj[maxn];
int sum[maxn];
bool dp[maxn];
long long plan_roller_coaster(vector<int32_t> s, vector<int32_t> t) {
n = s.size();
for (int i=0;i<n;i++) {
vals.push_back(s[i]); vals.push_back(t[i]);
}
sort(vals.begin(), vals.end());
vals.erase(unique(vals.begin(), vals.end()), vals.end());
sz = vals.size() - 1;
for (int i=0;i<n;i++) s[i] = dc(s[i]), t[i] = dc(t[i]);
for (int i=0;i<n;i++) {
adj[s[i]].push_back(t[i]);
}
for (int i=1;i<=sz;i++) sort(adj[i].begin(), adj[i].end());
for (int i=0;i<n;i++) sum[s[i]]--, sum[t[i]]++;
for (int i=1;i<=sz;i++) sum[i] += sum[i-1];
if (*min_element(sum+1, sum+sz+1) <= -2) return 1;
dp[sz+1] = 1;
for (int i=sz;i>=1;i--) {
if (sum[i] == -1 || !dp[i+1]) dp[i] = 0;
else dp[i] = 1;
for (int v:adj[i]) if (v > i && dp[v+1]) dp[i] = 1;
}
if (!dp[1]) return 1;
return 0;
}
Compilation message (stderr)
railroad.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
railroad_c.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |