Submission #1257769

#TimeUsernameProblemLanguageResultExecution timeMemory
1257769erfankavianiJakarta Skyscrapers (APIO15_skyscraper)C++20
0 / 100
135 ms247104 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; #define X first #define Y second #define endl '\n' const int MAXN = 3e4 + 10; const int MOD = 1e9 + 7; const ll INF = 2e18; const int LOG = 22; const int SQ = 300; int n , m , B[MAXN] , P[MAXN] , dist[MAXN * SQ]; vector<pii> adj[MAXN * SQ]; map<pii , int> mark , ind; deque<int> q; void BFS(int v){ for(int i = 0; i < MAXN * SQ; i++){ dist[i] = MOD; } dist[v] = 0; q.push_back(v); while(q.size() > 0){ int v = q.front(); q.pop_front(); for(auto i : adj[v]){ int u = i.X , w = i.Y; if(dist[v] + w >= dist[u]){ continue; } dist[u] = dist[v] + w; if(w == 0){ q.push_front(u); } else{ q.push_back(u); } } } } int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> m; vector<pii> vec; for(int i = 0; i < m; i++){ cin >> B[i] >> P[i]; if(mark[pii(P[i] , B[i])] == 0){ for(int j = B[i]; j < n; j += P[i]){ vec.push_back({P[i] , j}); mark[pii(P[i] , j)] = 1; } for(int j = B[i] - P[i]; j >= 0; j -= P[i]){ vec.push_back({P[i] , j}); mark[pii(P[i] , j)] = 1; } } } sort(vec.begin() , vec.end()); for(int i = 0; i < vec.size(); i++){ ind[pii(vec[i].X , vec[i].Y)] = i + n; } for(int i = 0; i < m; i++){ adj[B[i]].push_back({ind[pii(P[i] , B[i])] , 0}); } for(int i = 0; i < vec.size(); i++){ int x = vec[i].X , y = vec[i].Y; if(y + x < n){ adj[i + n].push_back({ind[pii(x , y + x)] , 1}); } if(y - x >= 0){ adj[i + n].push_back({ind[pii(x , y - x)] , 1}); } adj[i + n].push_back({y , 0}); } BFS(ind[pii(P[0] , B[0])]); cout << dist[B[1]] << endl; 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...