Submission #1232011

#TimeUsernameProblemLanguageResultExecution timeMemory
1232011LIARoller Coaster Railroad (IOI16_railroad)C++17
30 / 100
162 ms14400 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long struct DSU { vector<int> p, r; DSU(int n) : p(n), r(n) { iota(p.begin(), p.end(), 0); } int find(int a) { return p[a] == a ? a : p[a] = find(p[a]); } bool unite(int a, int b) { a = find(a); b = find(b); if (a == b) return false; if (r[a] < r[b]) swap(a, b); p[b] = a; if (r[a] == r[b]) r[a]++; return true; } }; ll plan_roller_coaster(vector<int> s, vector<int> t) { int n = s.size(); vector<int> xs; xs.reserve(2 * n + 1); xs.push_back(1); for (int v : s) xs.push_back(v); for (int v : t) xs.push_back(v); sort(xs.begin(), xs.end()); xs.erase(unique(xs.begin(), xs.end()), xs.end()); int m = xs.size(); vector<ll> diff(m + 1); for (int i = 0; i < n; i++) { int a = lower_bound(xs.begin(), xs.end(), s[i]) - xs.begin(); int b = lower_bound(xs.begin(), xs.end(), t[i]) - xs.begin(); diff[b]--; diff[a]++; } int idx1 = lower_bound(xs.begin(), xs.end(), 1) - xs.begin(); diff[idx1]--; vector<ll> bal(m - 1); ll cur = 0; for (int i = 0; i < m - 1; i++) { cur += diff[i]; bal[i] = cur; } for (int i = 0; i < m - 1; i++) { if (bal[i] > 0) return 1; } DSU dsu(m); for (int i = 0; i < n; i++) { int a = lower_bound(xs.begin(), xs.end(), s[i]) - xs.begin(); int b = lower_bound(xs.begin(), xs.end(), t[i]) - xs.begin(); dsu.unite(a, b); } for (int i = 0; i < m - 1; i++) { if (bal[i] != 0) dsu.unite(i, i + 1); } int root = dsu.find(0); for (int i = 1; i < m; i++) { if (dsu.find(i) != root) 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...