제출 #1208402

#제출 시각아이디문제언어결과실행 시간메모리
1208402mychecksedadRailway Trip (JOI17_railway_trip)C++20
20 / 100
2093 ms33728 KiB
/* Author : Mychecksdead */ #include<bits/stdc++.h> using namespace std; #define ll long long int #define MOD (1000000000+7) #define MOD1 (998244353) #define pb push_back #define all(x) x.begin(), x.end() #define en cout << '\n' #define ff first #define ss second #define pii pair<int,int> #define vi vector<int> const int N = 1e6+100, M = 1e5+10, K = 52, MX = 30; struct Fenwick{ vector<int> t; Fenwick(int n){ t.resize(n + 1); } void add(int v){ while(v < t.size()){ t[v]++; v += v & -v; } } int get(int v){ int res=0; while(v > 0){ res+=t[v]; v -= v&-v; } return res; } }; int n, k, q, a[N]; vector<int> g[N]; void solve(){ cin >> n >> k >> q; vector<vi> C(k + 1); for(int i = 1; i <= n; ++i){ cin >> a[i]; C[a[i]].pb(i); } // Fenwick fw(n); // for(int i = k; i >= 1; --i){ // for(int x: C[i]) fw.add(x); // for(int j = 0; j + 1 < C[i].size(); ++j){ // int w = fw.get(C[i][j + 1]) - fw.get(C[i][j]); // g[C[i][j]].pb({C[i][j + 1], w}); // g[C[i][j + 1]].pb({C[i][j], w}); // } // } vector<pii> Q; for(int i = 1; i <= n; ++i){ while(Q.size() && Q.back().ff < a[i]) Q.pop_back(); if(Q.size()){ int v = i; int u = Q.back().ss; g[u].pb(v); g[v].pb(u); } Q.pb({a[i], i}); } Q.clear(); for(int i = n; i >= 1; --i){ while(Q.size() && Q.back().ff < a[i]) Q.pop_back(); if(Q.size()){ int v = i; int u = Q.back().ss; g[u].pb(v); g[v].pb(u); } Q.pb({a[i], i}); } for(int i = 1; i <= q; ++i){ int l, r; cin >> l >> r; vector<int> dist(n + 1, N); dist[l] = 0; queue<int> qq; qq.push(l); while(qq.size()){ int v = qq.front(); qq.pop(); for(int u: g[v]){ if(dist[u] == N){ dist[u] = dist[v] + 1; qq.push(u); } } } cout << dist[r] - 1 << '\n'; } } int main(){ cin.tie(0); ios::sync_with_stdio(0); int tt = 1, aa; // freopen("in.txt", "r", stdin); // freopen("out.txt", "w", stdout); while(tt--){ solve(); en; } cerr<<"time taken : "<<(float)clock()/CLOCKS_PER_SEC<<" seconds\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...