Submission #988225

# Submission time Handle Problem Language Result Execution time Memory
988225 2024-05-24T10:17:13 Z GrindMachine Railway Trip (JOI17_railway_trip) C++17
20 / 100
2000 ms 11008 KB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;

template<typename T> using Tree = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
typedef long long int ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;

#define fastio ios_base::sync_with_stdio(false); cin.tie(NULL)
#define pb push_back
#define endl '\n'
#define sz(a) (int)a.size()
#define setbits(x) __builtin_popcountll(x)
#define ff first
#define ss second
#define conts continue
#define ceil2(x,y) ((x+y-1)/(y))
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define yes cout << "Yes" << endl
#define no cout << "No" << endl

#define rep(i,n) for(int i = 0; i < n; ++i)
#define rep1(i,n) for(int i = 1; i <= n; ++i)
#define rev(i,s,e) for(int i = s; i >= e; --i)
#define trav(i,a) for(auto &i : a)

template<typename T>
void amin(T &a, T b) {
    a = min(a,b);
}

template<typename T>
void amax(T &a, T b) {
    a = max(a,b);
}

#ifdef LOCAL
#include "debug.h"
#else
#define debug(...) 42
#endif

/*



*/

const int MOD = 1e9 + 7;
const int N = 1e5 + 5;
const int inf1 = int(1e9) + 5;
const ll inf2 = ll(1e18) + 5;

vector<ll> adj[N];

void solve(int test_case)
{
    ll n,k,q; cin >> n >> k >> q;
    vector<ll> a(n+5);
    rep1(i,n) cin >> a[i];

    auto add_edge = [&](ll u, ll v){
        adj[u].pb(v), adj[v].pb(u);
    };

    {
        stack<ll> stk;
        rep1(i,n){
            while(!stk.empty() and a[i] >= a[stk.top()]){
                add_edge(i,stk.top());
                stk.pop();
            }
            stk.push(i);
        }
    }

    {
        stack<ll> stk;
        rev(i,n,1){
            while(!stk.empty() and a[i] >= a[stk.top()]){
                add_edge(i,stk.top());
                stk.pop();
            }
            stk.push(i);
        }
    }

    vector<bool> vis(n+5);

    while(q--){
        ll s,t; cin >> s >> t;
        queue<pll> q;
        fill(all(vis),0);
        q.push({0,s});
        vis[s] = 1;

        ll ans = -1;

        while(!q.empty()){
            auto [cost,u] = q.front();
            q.pop();

            if(u == t){
                ans = cost;
                break;
            }

            trav(v,adj[u]){
                if(vis[v]) conts;
                q.push({cost+1,v});
                vis[v] = 1;
            }
        }

        assert(ans != -1);
        ans--;
        cout << ans << endl;
    }
}

int main()
{
    fastio;

    int t = 1;
    // cin >> t;

    rep1(i, t) {
        solve(i);
    }

    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2652 KB Output is correct
2 Correct 1 ms 2652 KB Output is correct
3 Correct 1 ms 2652 KB Output is correct
4 Correct 1 ms 2652 KB Output is correct
5 Correct 1 ms 2580 KB Output is correct
6 Correct 1 ms 2912 KB Output is correct
7 Correct 1 ms 2652 KB Output is correct
8 Correct 1 ms 2652 KB Output is correct
9 Correct 1 ms 2652 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 2652 KB Output is correct
2 Correct 99 ms 9820 KB Output is correct
3 Correct 96 ms 9820 KB Output is correct
4 Correct 100 ms 9820 KB Output is correct
5 Correct 98 ms 10008 KB Output is correct
6 Correct 121 ms 10064 KB Output is correct
7 Correct 120 ms 10648 KB Output is correct
8 Correct 49 ms 8272 KB Output is correct
9 Correct 59 ms 10068 KB Output is correct
10 Correct 49 ms 9308 KB Output is correct
11 Correct 91 ms 10068 KB Output is correct
12 Correct 91 ms 10076 KB Output is correct
13 Correct 119 ms 10196 KB Output is correct
14 Correct 92 ms 10072 KB Output is correct
15 Correct 94 ms 10076 KB Output is correct
16 Correct 86 ms 10200 KB Output is correct
17 Correct 126 ms 10636 KB Output is correct
18 Correct 117 ms 10676 KB Output is correct
19 Correct 81 ms 10528 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 2037 ms 10324 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 2009 ms 11008 KB Time limit exceeded
2 Halted 0 ms 0 KB -