제출 #1162575

#제출 시각아이디문제언어결과실행 시간메모리
1162575abysmalExhibition (JOI19_ho_t2)C++20
100 / 100
100 ms1932 KiB
#include<algorithm>
#include<complex>
#include<iostream>
#include<map>
#include<queue>
#include<set>
#include<stdint.h>
#include<vector>

#ifdef LOCAL
#include "dbg.h"
#else
#define dbg(...)
#endif

using namespace std;

const int64_t INF = (int64_t) 1e18 + 777;
const int64_t mINF = (int64_t) 1e9 + 777;
const int64_t MOD = (int64_t) 1e9 + 7;

struct Picture
{
    int s; int v;

    Picture(int s_, int v_) : s(s_), v(v_) {}

    bool operator < (const Picture& o) 
    {
        if(v == o.v) return s < o.s;
        return v < o.v;
    }
};

struct Solution
{
	Solution() {}

	void solve()
	{
        int n; int m;
        cin >> n >> m;
        vector<Picture> pic;
        vector<int> c(m);
        for(int i = 0; i < n; i++)
        {
            int s; int v;
            cin >> s >> v;

            pic.emplace_back(s, v);
        }

        for(int i = 0; i < m; i++)
        {
            cin >> c[i];
        }

        sort(c.begin(), c.end());
        sort(pic.begin(), pic.end());
        int ans = 0;
        int j = n - 1;
        for(int i = m - 1; i >= 0; i--)
        {
            while(j >= 0 && pic[j].s > c[i]) j--;
            if(j >= 0)
            {
                ans++;
                j--;
            }
        }
        cout << ans << "\n";
	}

	int modadd(int a, int b)
	{
		int res = a + b;
		if(res >= MOD) res -= MOD;
		return res;
	}

	int modmul(int a, int b)
	{
		return (1LL * a * b) % MOD;
	}
};

int main()
{
	int t = 1;
	//cin >> t;
	for(int i = 0; i < t; i++)
	{
		Solution().solve();
	}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...