Submission #1039184

#TimeUsernameProblemLanguageResultExecution timeMemory
1039184Mr_PhFire (BOI24_fire)C++17
40 / 100
239 ms179928 KiB
#include<bits/stdc++.h> #define endl '\n' using namespace std; const int mod=(int)1e9+7; int p[900003][23]; vector<int>lol; void solve() { int n,m; cin>>n>>m; vector<pair<int,int>>arr; vector<int>hi; for(int i=0;i<n;i++) { int a,b; cin>>a>>b; hi.push_back(a); hi.push_back(b); hi.push_back(a+1); hi.push_back(b+1); arr.push_back({a,b}); } hi.push_back(m); hi.push_back(m+1); sort(hi.begin(),hi.end()); hi.erase(unique(hi.begin(),hi.end()),hi.end()); m=lower_bound(hi.begin(),hi.end(),m)-hi.begin(); for(int i=0;i<n;i++) { arr[i].first=lower_bound(hi.begin(),hi.end(),arr[i].first)-hi.begin(); arr[i].second=lower_bound(hi.begin(),hi.end(),arr[i].second)-hi.begin(); } // for(auto i:arr)cout<<i.first<<" "<<i.second<<endl; for(int i=0;i<n;i++) { if(arr[i].first>arr[i].second)arr[i].second+=m; p[arr[i].first][0]=max(p[arr[i].first][0],arr[i].second+1); } for(int i=1;i<2*m;i++)p[i][0]=max(p[i-1][0],p[i][0]); for(int i=1;i<=20;i++) for(int j=0;j<2*m;j++) p[j][i]=p[p[j][i-1]][i-1]; int fans=1e9; for(int i=0;i<m;i++) { int cnt=0,cur=i; for(int j=20;j>=0;j--) { if(p[cur][j]<=i+m) { cur=p[cur][j]; cnt+=(1ll<<j); } } if(p[cur][0]<=i+m)continue; cnt++; // cout<<i<<" "<<cnt<<" "<<cur<<" "<<p[cur][0]<<" "<<p[i][0]<<endl; fans=min(fans,cnt); } if(fans==1e9)cout<<-1<<endl; else cout<<fans<<endl; } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); int t=1; // cin>>t; while(t--) 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...