Submission #1323533

#TimeUsernameProblemLanguageResultExecution timeMemory
1323533k1r1t0Roller Coaster Railroad (IOI16_railroad)C++20
30 / 100
267 ms37512 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using vi = vector<int>; const int N = 410000; const int INF = (int)(2e9); int n, m, b[N]; bool w[N]; vi zip, g[N]; void dfs(int v) { if (w[v]) return; w[v] = true; for (int u : g[v]) dfs(u); } ll plan_roller_coaster(vi s, vi t) { s.push_back(INF); t.push_back(1); n = s.size(); for (int i = 0; i < n; i++) { zip.push_back(s[i]); zip.push_back(t[i]); } sort(begin(zip), end(zip)); zip.erase(unique(begin(zip), end(zip)), end(zip)); m = zip.size(); for (int i = 0; i < n; i++) { s[i] = lower_bound(begin(zip), end(zip), s[i]) - begin(zip); t[i] = lower_bound(begin(zip), end(zip), t[i]) - begin(zip); } for (int i = 0; i < n; i++) { g[s[i]].push_back(t[i]); g[t[i]].push_back(s[i]); } for (int i = 0; i < n; i++) { b[s[i]]++; b[t[i]]--; } for (int i = 1; i < m; i++) b[i] += b[i - 1]; for (int i = 0; i < m; i++) if (b[i] > 0) return 1; else if (b[i] < 0) { g[i].push_back(i + 1); g[i + 1].push_back(i); } for (int i = 0; i < m; i++) w[i] = false; dfs(0); for (int i = 0; i < m; i++) if (!w[i]) return 1; return 0; } #ifdef LOCAL int main() { int n; assert(1 == scanf("%d", &n)); std::vector<int> s(n), t(n); for (int i = 0; i < n; ++i) assert(2 == scanf("%d%d", &s[i], &t[i])); long long ans = plan_roller_coaster(s, t); printf("%lld\n", ans); return 0; } #endif

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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...