Submission #1169565

#TimeUsernameProblemLanguageResultExecution timeMemory
1169565lufychopExhibition (JOI19_ho_t2)C++20
0 / 100
0 ms328 KiB
#include <bits/stdc++.h> using namespace std; int main(void) { int n,m,s,v,c; cin>>n>>m; set<int> frameset; vector<int> frame; vector<int> lnds,lnds2; vector<int> frameleft; vector<pair<int,int>> x; for(int i=0;i<n;i++) { cin>>s>>v; x.push_back({v,s}); } for(int i=0;i<m;i++) { cin>>c; frame.push_back(c); } sort(x.begin(),x.end()); for(int i=0;i<n;i++) { swap(x[i].first,x[i].second); } sort(frame.begin(),frame.end()); frameleft.push_back(1); for(int i=1;i<m;i++) { if(frame[i]!=frame[i-1]) { frameleft.push_back(1); } else { frameleft[frameleft.size()-1]++; } } frame.erase(unique(frame.begin(),frame.end()),frame.end()); m=frame.size(); for(int i=0;i<m;i++) { frameset.insert(frame[i]); //cout<<frame[i]<<" "<<frameleft[i]<<"\n"; } for(int i=0;i<n;i++) { set<int>::iterator itr=frameset.lower_bound(x[i].first),itr2; int fi=lower_bound(frameleft.begin(),frameleft.end(),*itr)-frameleft.begin(); int x2,fi2; if(lnds.empty()||lnds.back()<=x[i].first) { if(itr==frameset.end()) { //cout<<frameset.size()<<" "; continue; } frameleft[fi]--; lnds.push_back(x[i].first); lnds2.push_back(fi); if(frameleft[fi]==0) { frameset.erase(itr); } } else { fi2=upper_bound(lnds.begin(),lnds.end(),x[i].first)-lnds.begin(); frameleft[lnds2[fi2]]++; frameset.insert(frame[fi]); itr2=frameset.lower_bound(x[i].first); fi=lower_bound(frameleft.begin(),frameleft.end(),*itr)-frameleft.begin(); frameleft[fi--]; lnds[fi2]=x[i].first; lnds2[fi2]=fi; if(frameleft[fi]==0) { frameset.erase(itr2); } } } cout<<lnds.size(); return 0; } /* 3 4 10 20 5 1 3 5 4 6 10 4 4 4 6 10 5 3 10 4 5 7 7 7 4 3 3 3 4 4 3 2 1 2 1 2 1 2 1 1 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...