#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |