Submission #1281417

#TimeUsernameProblemLanguageResultExecution timeMemory
1281417whtthFire (BOI24_fire)C++20
0 / 100
46 ms6596 KiB
#include<bits/stdc++.h> using namespace std; int n, m, e[200001], s[200001], ma=0, ans=1e9; vector<pair<int, int>> now; bool cmp(pair<int, int> a, pair<int, int> b){ if(a.first==b.first)return a.second>b.second; return a.first<b.first; } vector<pair<int, int>> chosenone; int main(){ ios::sync_with_stdio(0);cin.tie(nullptr); cin>>n>>m; for(int i=1;i<=n;i++){ cin>>s[i]>>e[i]; ma=max(ma, e[i]); if(s[i]<=e[i])now.push_back({s[i], e[i]}); } sort(now.begin(), now.end(), cmp); int cnt=2; int nxt=now[0].second, R=now[0].second, L=now[0].first; chosenone.push_back({L, R}); for(int i=1;i<now.size();i++){ if(nxt+1<now[i].first){ cnt++; nxt=R; chosenone.push_back({L, R}); if(R==ma)break; } if(R<now[i].second){ R=now[i].second; L=now[i].first; } } if(chosenone.back().second!=ma)chosenone.push_back({L, R}); chosenone.erase(unique(chosenone.begin(), chosenone.end()), chosenone.end()); for(int i=1;i<chosenone.size();i++){ if(chosenone[i].first>chosenone[i-1].second){ cout<<-1; return 0; } } //for(auto[u, v] : chosenone)cout<<u<<" "<<v<<"\n"; for(int i=1;i<=n;i++){ if(s[i]>e[i]){ int l=0, r=chosenone.size()-1, mid, vtst=-1; while(l<=r){ mid=(l+r)/2; if(chosenone[mid].second>=s[i]){ vtst=mid; r=mid-1; } else l=mid+1; } l=0, r=chosenone.size()-1; int vten=-1; while(l<=r){ mid=(l+r)/2; if(chosenone[mid].first<=e[i]){ vten=mid; l=mid+1; } else r=mid-1; } if(vten!=-1 and vtst!=-1){ vtst++; ans=min(ans, int(chosenone.size()-(chosenone.size()-vtst)-vten)+1); } } } if(ans==1e9)cout<<-1; else cout<<ans; 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...
#Verdict Execution timeMemoryGrader output
Fetching results...