제출 #1264750

#제출 시각아이디문제언어결과실행 시간메모리
1264750PlayVoltzEvent Hopping 2 (JOI21_event2)C++20
0 / 100
98 ms49108 KiB
#include <cstdio> #include <stdio.h> #include <stdbool.h> #include <iostream> #include <map> #include <vector> #include <climits> #include <stack> #include <string> #include <queue> #include <algorithm> #include <set> #include <unordered_set> #include <unordered_map> #include <cmath> #include <cctype> #include <bitset> #include <iomanip> #include <cstring> #include <numeric> #include <cassert> using namespace std; #define int long long #define pii pair<int, int> #define mp make_pair #define pb push_back #define fi first #define se second vector<vector<int> > twok; int calc(int l, int r){ int res=0; for (int i=19; i>=0; --i)if (twok[i][l]<=r)res+=(1<<i), l=twok[i][l]; return res; } int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, k; cin>>n>>k; vector<int> disc; vector<pii> vect(n); for (int i=0; i<n; ++i)cin>>vect[i].fi>>vect[i].se, disc.pb(vect[i].fi), disc.pb(vect[i].se); sort(disc.begin(), disc.end()); disc.erase(unique(disc.begin(), disc.end()), disc.end()); for (int i=0; i<n; ++i){ vect[i].fi=lower_bound(disc.begin(), disc.end(), vect[i].fi)-disc.begin(); vect[i].se=lower_bound(disc.begin(), disc.end(), vect[i].se)-disc.begin(); } twok.resize(20, vector<int>(disc.size()+1)); vector<vector<int> > ooga(disc.size()+1); for (int i=0; i<n; ++i)ooga[vect[i].fi].pb(i); int mn=disc.size(); for (int i=disc.size(); i>=0; --i){ for (auto a:ooga[i])mn=min(mn, vect[a].se); twok[0][i]=mn; } for (int i=1; i<20; ++i)for (int j=0; j<=disc.size(); ++j)twok[i][j]=twok[i-1][twok[i-1][j]]; int c=calc(0, disc.size()-1); if (c<k){ cout<<-1; return 0; } set<pii> s; s.insert(mp(0ll, 0ll)); s.insert(mp(disc.size(), disc.size())); for (int i=0; s.size()<k+2; ++i){ int l=(--s.lower_bound(mp(vect[i].se, 0ll)))->se; int r=s.lower_bound(mp(vect[i].se, 0ll))->fi; if (l>vect[i].fi)continue; int res=c-calc(l, r)+calc(l, vect[i].fi)+calc(vect[i].se, r)+1; if (res>=k)cout<<i+1<<"\n", c=res, s.insert(vect[i]); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...