제출 #1051492

#제출 시각아이디문제언어결과실행 시간메모리
1051492MuhammadSaramFire (BOI24_fire)C++17
100 / 100
385 ms45264 KiB
#include <bits/stdc++.h> using namespace std; int main() { int n,m; cin>>n>>m; vector<pair<int,int>> op; set<int> se={0,m}; int s[n],e[n]; for (int i=0;i<n;i++) { cin>>s[i]>>e[i]; se.insert(s[i]); se.insert(e[i]); } map<int,int> cmp; for (int i:se) cmp[i]=cmp.size(); m=cmp.size(); int mx[m+1]={}; for (int i=0;i<n;i++) { s[i]=cmp[s[i]],e[i]=cmp[e[i]]; if (s[i]>e[i]) mx[s[i]]=m,op.push_back({s[i],e[i]}); mx[s[i]]=max(mx[s[i]],e[i]); } if (op.empty()) { cout<<-1<<endl; return 0; } for (int i=1;i<=m;i++) mx[i]=max(mx[i],mx[i-1]); int ans=-1; for (auto i:op) { int cnt=1,prt=i.second; while (prt<i.first) { if (mx[prt]<=prt) break; prt=mx[prt],cnt++; } if (prt>=i.first) { if (ans==-1) ans=cnt; ans=min(ans,cnt); } } cout<<ans<<endl; 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...