Submission #95539

#TimeUsernameProblemLanguageResultExecution timeMemory
95539MohamedAhmed0Jakarta Skyscrapers (APIO15_skyscraper)C++14
57 / 100
438 ms9360 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN = 2010 , MAXM = 30010; int visited[MAXN] ; pair<int , int>arr[MAXM] ; vector< vector<int> >now(MAXN) ; int main() { int n , m ; cin>>n>>m ; for(int i = 0 ; i < m ; ++i) { cin>>arr[i].first>>arr[i].second; now[arr[i].first].push_back(i); } priority_queue< pair<int , int> , vector< pair<int , int> > , greater< pair<int , int> > >q ; q.push({0 , arr[0].first}); while(!q.empty()) { pair<int , int>p = q.top() ; q.pop() ; int dist = p.first , idx = p.second ; if(idx == arr[1].first) return cout<<dist<<"\n" , 0 ; if(visited[idx]) continue; visited[idx] = 1 ; for(auto &i : now[idx]) { int cnt = 0 ; for(int j = idx+arr[i].second ; j < n ; j += arr[i].second) { cnt++ ; if(!visited[j]) q.push({dist + cnt , j}); } cnt = 0 ; for(int j = idx - arr[i].second ; j >= 0 ; j -= arr[i].second) { cnt++; if(!visited[j]) q.push({dist + cnt , j}); } } } return cout<<-1<<"\n" , 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...