Submission #889214

#TimeUsernameProblemLanguageResultExecution timeMemory
889214MinbaevRailway Trip (JOI17_railway_trip)C++17
20 / 100
2049 ms17356 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #pragma GCC target("avx,avx2,fma") #pragma GCC optimize("Ofast,unroll-loops") #define pii pair<int,int> using namespace __gnu_pbds; using namespace std; #define pb push_back #define all(x) x.begin(),x.end() #define rall(x) x.rbegin(),x.rend() #define int long long #define f first #define s second #define pii pair<int,int> template<class T>bool umax(T &a,T b){if(a<b){a=b;return true;}return false;} template<class T>bool umin(T &a,T b){if(b<a){a=b;return true;}return false;} typedef tree<int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; const int mod= 1e9 +7; const int N=1e5*4; int binpow (int a, int n) { if (n == 0) return 1; if (n % 2 == 1) return binpow (a, n-1) * a; else { int b = binpow (a, n/2); return b * b; } } vector<int>g[N]; int n,m,k,q; void bfs(int x,int y){ vector<int>dist(n+1,mod); dist[x] = 0; queue<int>q; q.push(x); while(!q.empty()){ auto ind = q.front(); q.pop(); for(auto to:g[ind]){ if(umin(dist[to],dist[ind] + 1)){ q.push(to); } } } cout<<dist[y] - 1<<"\n"; } void solve(){ cin>>n>>m>>q; vector<int>a(n+1); for(int i = 1;i<=n;i++){ cin>>a[i]; } for(int i = 0 ; i <= n;i++){ int mx = 0; for(int j = i + 1;j<=n;j++){ if(umax(mx,a[j])){ g[i].pb(j); g[j].pb(i); } if(mx>=a[i])break; } } while(q--){ int x,y; cin>>x>>y; bfs(x,y); } } signed main() { // freopen("seq.in", "r", stdin); // freopen("seq.out", "w", stdout); ios_base::sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL); int cnt=0; int tt=1;//cin>>tt; while(tt--)solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...