Submission #761724

# Submission time Handle Problem Language Result Execution time Memory
761724 2023-06-20T07:52:38 Z ByeWorld Jakarta Skyscrapers (APIO15_skyscraper) C++17
0 / 100
3 ms 3888 KB
#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#define ll long long
#define fi first
#define se second
#define pb push_back
#define lb lower_bound
#define ub upper_bound
using namespace std;
const int MAXN = 3e4+10;
const double SMALL = 1e-6;
const ll INF = 1e18+10;
const int MOD = 1e9+7;
typedef pair<int,int> pii;
typedef pair<ll, pii> ipii;

bitset <MAXN> ma[MAXN];
int b[MAXN], p[MAXN];
bitset <MAXN> vis;
unordered_map <int, ll> tot[MAXN];
vector <int> ed[MAXN];
int n, m;
priority_queue <ipii, vector<ipii>, greater<ipii>> pq;

void dji(){
    tot[b[0]][p[0]] = -INF;
    pq.push(ipii(-INF, pii(b[0], p[0])));
    
    while(!pq.empty()){
        ll dis = pq.top().fi; int nw = pq.top().se.fi; int jump = pq.top().se.se;
        //cout << dis << ' ' << nw << ' ' << jump << "p\n";
        pq.pop();
        if(dis >= tot[nw][jump]) continue;
        
        if(!vis[nw]){
            vis[nw] = 1;
            for(auto nx : ed[nw]){ // ke k lain
                if(tot[nw][nx] > dis){ //gk nambah lompat 
                    tot[nw][nx] = dis;
                    pq.push(ipii(dis, pii(nw, nx)));
                }
            }
        }
        
        if(nw-jump >= 0 && tot[nw-jump][jump] > dis+1){
            tot[nw-jump][jump] = dis+1;
            pq.push(ipii(dis+1, pii(nw-jump, jump)));
        }
        if(nw+jump <= n-1 && tot[nw+jump][jump] > dis+1){
            tot[nw+jump][jump] = dis+1;
            pq.push(ipii(dis+1, pii(nw+jump, jump)));
        }
            
    }
    
    ll ans = INF;
    for(int i=1; i<=30000; i++) ans = min(ans, tot[b[1]][i]+INF);
    if(ans != INF) cout << ans << '\n';
    else cout << "-1\n";
}

signed main(){
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin >> n >> m;
    for(int i=0; i<=m-1; i++){ 
        cin >> b[i] >> p[i];
    }
    for(int i=0; i<=m-1; i++){ 
        if(ma[b[i]][p[i]] ==  1) continue;
        ma[b[i]][p[i]] = 1;
        ed[b[i]].pb(p[i]);
    }
    dji();
}
# Verdict Execution time Memory Grader output
1 Incorrect 3 ms 3888 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 3 ms 3888 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 3 ms 3888 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 3 ms 3888 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 3 ms 3888 KB Output isn't correct
2 Halted 0 ms 0 KB -