제출 #1141605

#제출 시각아이디문제언어결과실행 시간메모리
1141605hashimaliFire (BOI24_fire)C++20
31 / 100
2096 ms580 KiB
#include <bits/stdc++.h> #define endl '\n' #define ld long double #define pb push_back #define pf push_front #define mod 998244353 #define se second #define fi first #define all(ls) (ls).begin(),(ls).end() #define int long long using namespace std; int n,m; const int N=2e5+10; pair<int,int>a[N]; int f(int x){ queue<pair<int,int>>q; q.push({1,x}); set<int>inds; for(int i=0;i<n;i++) if(i!=x) inds.insert(i); while(q.size()){ pair<int,int>u=q.front(); q.pop(); if(a[x].fi<=a[u.se].se-m) return u.fi; if(inds.empty()) continue; vector<int>r; for(int v:inds) if(a[u.se].fi<=a[v].fi and a[v].fi<=a[u.se].se){ q.push({u.fi+1,v}); r.pb(v); } for(int v:r) inds.erase(v); } return 1e9; } void solve(){ cin>>n>>m; for(int i=0;i<n;i++){ cin>>a[i].fi>>a[i].se; if(a[i].fi>a[i].se) a[i].se+=m; } sort(a,a+n); int ans=1e9; for(int i=0;i<n;i++) ans=min(ans,f(i)); if(ans==1e9) ans=-1; cout<<ans<<endl; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t=1; // cin>>t; for(int i=1;i<=t;i++){ // cout<<"Scenario #"<<i<<":"<<" "; solve(); } }
#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...