Submission #241025

#TimeUsernameProblemLanguageResultExecution timeMemory
241025osaaateiasavtnlRailway Trip (JOI17_railway_trip)C++14
5 / 100
29 ms8312 KiB
#include<bits/stdc++.h> using namespace std; #define ii pair <int, int> #define app push_back #define all(a) a.begin(), a.end() #define bp __builtin_popcountll #define ll long long #define mp make_pair #define f first #define s second #define Time (double)clock()/CLOCKS_PER_SEC const int N = 2007; int n, k, q; int a[N]; vector <int> g[N]; void bfs(int S, int dist[N]) { queue <int> q; for (int i = 0; i < N; ++i) dist[i] = N; q.push(S); dist[S] = 0; while (q.size()) { int u = q.front(); q.pop(); for (int v : g[u]) { if (dist[u] + 1 < dist[v]) { dist[v] = dist[u] + 1; q.push(v); } } } } int dist[N][N]; signed main() { #ifdef HOME freopen("input.txt", "r", stdin); #else #define endl '\n' ios_base::sync_with_stdio(0); cin.tie(0); #endif cin >> n >> k >> q; for (int i = 1; i <= n; ++i) cin >> a[i]; for (int i = 1; i <= n; ++i) { int cur = -1; for (int j = i - 1; j >= 0; --j) { if (a[j] > cur) { g[i].app(j); cur = a[j]; } if (a[j] >= a[i]) break; } cur = -1; for (int j = i + 1; j <= n; ++j) { if (a[j] > cur) { g[i].app(j); cur = a[j]; } if (a[j] >= a[i]) break; } } for (int i = 1; i <= n; ++i) { bfs(i, dist[i]); } while (q--) { int i, j; cin >> i >> j; int ans = N; for (int k = 1; k <= n; ++k) { ans = min(ans, dist[i][k] + dist[j][k]); } cout << ans - 1 << endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...