Submission #238579

#TimeUsernameProblemLanguageResultExecution timeMemory
238579haengsyoExhibition (JOI19_ho_t2)C++14
100 / 100
83 ms4480 KiB
#pragma GCC optimize("O3")

#include "bits/stdc++.h"
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;

typedef long long ll;
tree<int,int,greater<int>,rb_tree_tag,tree_order_statistics_node_update> map_t;
#define FOR(i, a, b) for (int i = (a); i < (b); i++)
#define F0R(i, a) for(int i = 0; i < (a); ++i)
#define sz(x) (int)x.size()
#define SORT(x) sort(x.begin(),x.end())
#define ERASE(x) x.erase(unique(x.begin(),x.end()),x.end())
#define POSL(x,v) (lower_bound(x.begin(),x.end(),v)-x.begin())
#define POSU(x,v) (upper_bound(x.begin(),x.end(),v)-x.begin())
#define REV(x) reverse(x.begin(),x.end())
int dx[]={-1,0,1,0};
int dy[]={0,-1,0,1};
int n,m;
const int mxN=1e5+5;
pair<int,int> arr[mxN];
int sizes[mxN];

bool comp(pair<int,int> a,pair<int,int> b) {
    if(a.second==b.second)
        return a.first<b.first;
    return a.second<b.second;
}

int main() {
    // freopen("input.txt", "r", stdin);
    // freopen("output.txt", "w", stdout);
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> n >> m;
    F0R(i,n)
        cin >> arr[i].first >> arr[i].second;
    F0R(i,m)
        cin >> sizes[i];
    sort(arr,arr+n,comp);
    sort(sizes,sizes+m);
    int cur=n-1;
    int res=0;
    for(int i=m-1; ~i; i--) {
        while(~cur && arr[cur].first>sizes[i])
            cur--;
        if(~cur) {
            res++; cur--;
        }
    }
    cout << res;

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...