Submission #972093

#TimeUsernameProblemLanguageResultExecution timeMemory
972093batsukh2006Jakarta Skyscrapers (APIO15_skyscraper)C++17
10 / 100
19 ms756 KiB
#include<iostream> #include<stdio.h> #include<math.h> #include<map> #include<string> #include<algorithm> #include<vector> #include<string.h> #include<utility> #include<set> #include<cmath> #include<queue> #include<deque> #include<functional> #include<stack> #include<limits.h> #include<iomanip> #include<unordered_map> #include<numeric> #include<tuple> #include<bitset> using namespace std; #define MOD 1000000007 //#define int long long #define ss second #define ff first #define endl '\n' signed main(){ // freopen("file.in", "r", stdin); // freopen("file.out", "w", stdout); ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,m; cin>>n>>m; vector<int> b(m+1),p(m+1); for(int i=1; i<=m; i++) cin>>b[i]>>p[i]; int cnt=n-1; stack<int> q; q.push(2); vector<bool> vis(m+1); vector<int> dp(m+1,1e9); dp[2]=0; vis[2]=1; while(cnt>0&&!q.empty()){ int need=q.size(); while(need--){ int c=q.top(); q.pop(); cnt--; for(int i=1; i<=m; i++){ if(abs(b[i]-b[c])%p[i]==0){ dp[i]=min(dp[i],abs(b[i]-b[c])/p[i]+dp[c]); } } } for(int i=1; i<=m; i++){ if(!vis[i]&&dp[i]!=1e9){ vis[i]=1; q.push(i); } } } int ans=1e9; for(int i=2; i<=m; i++){ if(abs(b[1]-b[i])%p[1]==0){ ans=min(ans,abs(b[1]-b[i])/p[1]+dp[i]); } } if(ans==1e9) cout<<-1; else 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...