제출 #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...