Submission #895375

#TimeUsernameProblemLanguageResultExecution timeMemory
895375MilosMilutinovic버스 (JOI14_bus)C++14
100 / 100
133 ms23888 KiB
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); int n, m; cin >> n >> m; vector<vector<array<int, 3>>> g(n); for (int i = 0; i < m; i++) { int u, v, x, y; cin >> u >> v >> x >> y; --u; --v; g[u].push_back({v, x, y}); } vector<int> ptr(n); for (int i = 0; i < n; i++) { sort(g[i].begin(), g[i].end(), [&](array<int, 3> a, array<int, 3> b) { return a[1] > b[1]; }); } const int inf = (int) 1e9; vector<int> d(n, inf); function<void(int, int)> Update = [&](int v, int t) { d[v] = min(d[v], t); vector<pair<int, int>> e; while (ptr[v] < (int) g[v].size() && g[v][ptr[v]][1] >= d[v]) { e.emplace_back(g[v][ptr[v]][2], g[v][ptr[v]][0]); ptr[v] += 1; } sort(e.begin(), e.end()); for (auto& p : e) { Update(p.second, p.first); } }; vector<pair<int, int>> v; for (auto& p : g[0]) { Update(p[0], p[2]); v.emplace_back(d[n - 1], p[1]); } sort(v.begin(), v.end()); int k = (int) v.size(); vector<int> mx(k); for (int i = 0; i < k; i++) { if (i > 0) { mx[i] = mx[i - 1]; } mx[i] = max(mx[i], v[i].second); } int q; cin >> q; while (q--) { int t; cin >> t; if (v.empty() || v[0].first > t) { cout << -1 << '\n'; continue; } int low = 0, high = k - 1, p = 0; while (low <= high) { int mid = low + high >> 1; if (v[mid].first <= t) { p = mid; low = mid + 1; } else { high = mid - 1; } } cout << mx[p] << '\n'; } return 0; }

Compilation message (stderr)

bus.cpp: In function 'int main()':
bus.cpp:62:21: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   62 |       int mid = low + high >> 1;
      |                 ~~~~^~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...