Submission #98109

#TimeUsernameProblemLanguageResultExecution timeMemory
98109someone_aaExhibition (JOI19_ho_t2)C++17
100 / 100
96 ms3072 KiB
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define mp make_pair
#define P pair<ll, ll>
using namespace std;
const int maxn = 100100;
vector<P>v;
ll frames[maxn], n, m;
int bin_search(ll x) {
    if(x > frames[m]) return 0;
    int index = m;
    for(int cekor=m/2;cekor>0;cekor/=2) {
        while(index-cekor >= 1 && frames[index-cekor] >= x) index-=cekor;
    }
    return m - index + 1;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cin>>n>>m;
    ll sz, va;
    for(int i=1;i<=n;i++) {
        cin>>sz>>va;
        v.pb(mp(va, sz));
    }
    v.pb(mp(0, 0));
    sort(v.begin(), v.end());

    for(int i=1;i<=m;i++) {
        cin>>frames[i];
    }
    sort(frames+1, frames+m+1);

    int result = 0;
    int reached = 0;
    for(int i=n;i>=1;i--) {
        // process reversed
        int fit = bin_search(v[i].second);
        if(fit > reached) {
            // extend reached
            reached++;
            result = max(result, reached);
        }
    }
    cout<<result<<"\n";
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...