Submission #1155671

#TimeUsernameProblemLanguageResultExecution timeMemory
1155671adiyerFire (BOI24_fire)C++20
0 / 100
2095 ms46216 KiB
#include <bits/stdc++.h> #define all(x) x.begin(), x.end() #define len(s) (ll) s.size() #define pb push_back #define F first #define S second using namespace std; typedef long long ll; const int N = 6e5 + 17; const int P = 31; const int mod = 1e9 + 7; const ll inf = 1e18; ll n, m, sz, res; ll l[N], r[N], ord[N], was[N], d[N]; map < ll, ll > id; vector < pair < ll, ll > > vec; vector < pair < ll, ll > > g[N]; signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> m, res = inf; for(ll i = 1; i <= n; i++){ cin >> l[i] >> r[i], ord[i] = i; if(r[i] < l[i]) r[i] = r[i] + m; vec.pb({l[i], r[i]}); vec.pb({r[i], inf}); vec.pb({l[i] + m - 1, inf}); } sort(all(vec)); for(ll i = 0; i < len(vec); i++) if(!id[vec[i].F]) id[vec[i].F] = ++sz; for(ll i = 0; i < len(vec); i++){ if(vec[i].S != inf) g[id[vec[i].F]].pb({id[vec[i].S], 1}); if(i) g[id[vec[i].F]].pb({id[vec[i - 1].F], 0}); } for(ll i = 0; i < len(vec); i++){ if(vec[i].S == inf) continue; deque < ll > q; for(ll j = 1; j <= sz; j++) was[j] = d[j] = 0; q.push_front(id[vec[i].F]), was[id[vec[i].F]] = 1; while(len(q)){ ll v = q.front(); q.pop_front(); for(auto [u, w] : g[v]){ if(!was[u]){ d[u] = d[v] + w, was[u] = 1; if(!w) q.push_front(u); else q.push_back(u); } } } for(ll j = 0; j < len(vec); j++){ if(vec[i].F + m - 1 <= vec[j].F && was[id[vec[j].F]]){ res = min(res, d[id[vec[j].F]]); } } } if(res == inf) res = -1; cout << res; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...