Submission #826470

#TimeUsernameProblemLanguageResultExecution timeMemory
826470NhanBeooExhibition (JOI19_ho_t2)C++17
10 / 100
1076 ms340 KiB
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")

#include <bits/stdc++.h>
using namespace std;

// #define int ll
#define MAX LLONG_MAX
#define st first
#define nd second
#define endl '\n'
#define SZ(x) ((int)x.size())
#define ALL(x) x.begin(), x.end()
typedef long long ll;
typedef pair< int, int > ii;
typedef pair< int, ii > iii;
typedef vector< int > vi;
typedef vector< ii > vii;
typedef vector< iii > viii;
typedef vector< vi > vvi;
typedef vector< vii > vvii;
typedef vector< viii > vviii;

const int N = 1e5 + 5;
int n, m;
ii a[N];
int c[N], ans = 0;

void dfs(int ptr, int last, int cnt){
	ans = max(ans, cnt);
	if(ptr == m+1 or last == n) return;
	for(int i=last+1; i<=n; i++){
		if(a[i].st <= c[ptr]) dfs(ptr+1, i, cnt+1);
	}
	dfs(ptr+1, last, cnt);
}

signed main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	
	cin >> n >> m;
	for(int i=1; i<=n; i++) cin >> a[i].st >> a[i].nd;
	for(int i=1; i<=m; i++) cin >> c[i];
	sort(a+1, a+n+1, [](ii& x, ii& y){
		if(x.nd < y.nd) return true;
		else if(x.nd > y.nd) return false;
		else return x.st < y.st;
	});
	sort(c+1, c+m+1);
	// for(int i=1; i<=n; i++) cout << a[i].st << ' ' << a[i].nd << endl;
	dfs(1, 0, 0);
	cout << ans;
} 
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...