Submission #241034

#TimeUsernameProblemLanguageResultExecution timeMemory
241034osaaateiasavtnlRailway Trip (JOI17_railway_trip)C++14
5 / 100
29 ms8320 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]; bool used[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; if (n >= N) exit(1); for (int i = 1; i <= n; ++i) cin >> a[i]; vector <ii> ord; for (int i = 1; i <= n; ++i) { ord.app(mp(a[i], i)); } sort(all(ord)); reverse(all(ord)); for (auto e : ord) { int i = e.s; used[i] = 1; int cur = -1; for (int j = i - 1; j; --j) { if (used[j]) break; if (a[j] > cur) { g[i].app(j); g[j].app(i); //cout << "edge " << i << ' ' << j << endl; cur = a[j]; } } cur = -1; for (int j = i + 1; j <= n; ++j) { if (used[j]) break; if (a[j] > cur) { g[i].app(j); g[j].app(i); //cout << "edge " << i << ' ' << j << endl; cur = a[j]; } } } for (int i = 1; i <= n; ++i) bfs(i, dist[i]); while (q--) { int i, j; cin >> i >> j; cout << dist[i][j] - 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...