Submission #123897

#TimeUsernameProblemLanguageResultExecution timeMemory
123897frikhaJakarta Skyscrapers (APIO15_skyscraper)C++17
22 / 100
1080 ms33004 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<ll> vl ; #define mp make_pair #define pb push_back #define f first #define s second #define all(v) (v).begin(),(v).end() const int MOD = 1000000007; const int N = 1000005; const double PI =4*atan(1); const double eps = 1e-7; ll n,m; ll x,y; vl tab[N]; ll p[N]; ll b[N]; bool vis[N]; ll ans=-1; void bfs(ll u){ set<pair<ll,ll> > ss; ss.insert(mp(0,u)); pair<ll,ll> ras; while(!ss.empty()){ ras=*ss.begin(); ss.erase(ss.begin()); if(ras.second==b[1]){ ans=ras.first; return ; } vis[ras.s]=1; for(auto t: tab[ras.s]){ ll x=b[t]-p[t]; ll cnt=1; while(x>=0){ ss.insert(mp(ras.f+cnt,x)); cnt++; x-=p[t]; } x=b[t]+p[t]; cnt=1; while(x<n){ ss.insert(mp(ras.f+cnt,x)); cnt++; x+=p[t]; } } } } int main(){ ios::sync_with_stdio(0); //freopen("easy.txt","r",stdin); cin >> n >>m ; for(int i=0;i<m;i++){ cin >> x >> y; p[i]=y; b[i]=x; tab[x].pb(i); } bfs(b[0]); cout << ans; 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...
#Verdict Execution timeMemoryGrader output
Fetching results...