Submission #1283334

#TimeUsernameProblemLanguageResultExecution timeMemory
1283334zagaroExhibition (JOI19_ho_t2)C++20
0 / 100
1 ms572 KiB
#include<bits/stdc++.h> #include<ext/pb_ds/assoc_container.hpp> /**zagaro & lauren <3**/ #define mod 1000000007 //1e9 + 7 #define pi acos(-1) #define wl while #define str string #define ENDL "\n" #define sal ' ' #define tp_set ll #define prc(n) cout.precision(n);cout<<fixed; #define ord_set tree<tp_set, null_type, less<tp_set>, rb_tree_tag, tree_order_statistics_node_update> typedef long long ll; typedef bool bl; typedef char car; using namespace std; using namespace __gnu_pbds; vector<ll> tr; vector<ll> frm; void build(ll ind, ll l, ll r){ if(l == r){tr[ind] = frm[l];return ;} build(ind*2, l, (l+r)/2); build(ind*2+1, (l+r)/2+1, r); tr[ind] = max(tr[ind*2], tr[ind*2+1]); return ; } ll query(ll ind, ll l, ll r, ll x, ll y, ll v){ if(y < l || r < x)return LONG_LONG_MAX; if(tr[ind] < v)return LONG_LONG_MAX; if(l == r && tr[ind] >= v)return l; ll a; a = query(ind*2, l, (l+r)/2, x, y, v); if(a != LONG_LONG_MAX)return a; else return query(ind*2+1, (l+r)/2+1, r, x, y, v); } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll n, m, l, r, M, x; cin>>n>>m; vector<pair<ll,ll> > vec(n+1); frm.assign(m+1, 0); tr.assign(3*m+10, 0); vector<ll> dp(1, 0); vector<ll> ps(1, 0); for(int i=1;i<=n;i++)cin>>vec[i].first>>vec[i].second; sort(vec.begin(), vec.end()); for(int i=1;i<=m;i++)cin>>frm[i]; sort(frm.begin(), frm.end()); build(1, 1, m); for(int i=1;i<=n;i++){ l=0;r=dp.size(); wl(l<r-1){ M = (l+r)/2; if(dp[M] <= vec[i].second)l=M; else r=M; } x = query(1, 1, m, ps[l]+1, m, vec[i].first); if(x != LONG_LONG_MAX){ if(l == dp.size()-1){ dp.push_back(vec[i].second); ps.push_back(x); } else { dp[r] = vec[i].second; ps[r] = x; } } } cout<<dp.size()-1<<ENDL; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...