Submission #945860

#TimeUsernameProblemLanguageResultExecution timeMemory
945860nasir_bashirovJakarta Skyscrapers (APIO15_skyscraper)C++11
10 / 100
1 ms1364 KiB
#pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #include <bits/stdc++.h> using namespace std; #define db long double #define ll long long #define pii pair<int, int> #define pll pair<ll, ll> #define vi vector<int> #define vl vector<ll> #define vii vector<pii> #define vll vector<pll> #define endl '\n' #define all(x) x.begin(), x.end() #define fastio\ ios_base::sync_with_stdio(0);\ cin.tie(0);\ cout.tie(0)\ #define int long long const int sz = 3e4 + 5; int d[sz], n, m, a[sz], p[sz]; vi v[sz]; void bfs(){ for(int i = 1; i <= m; i++) d[i] = 1e9; queue<int> q; d[1] = 0; q.push(1); while(!q.empty()){ int cur = q.front(); q.pop(); for(int i = a[cur]; i < n; i += p[cur]){ for(int j : v[i]){ if(d[j] > d[cur] + 1) d[j] = d[cur] + (i - a[cur]) / p[cur], q.push(j); } } for(int i = a[cur] - p[cur]; i >= 0; i--){ for(int j : v[i]){ if(d[j] > d[cur] + 1) d[j] = d[cur] + (a[cur] - i) / p[cur], q.push(j); } } } } signed main(){ cin >> n >> m; for(int i = 1; i <= m; i++){ cin >> a[i] >> p[i]; v[a[i]].push_back(i); } bfs(); if(d[m - 1] == 1e9) d[m - 1] = -1; cout << d[m - 1]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...