제출 #110371

#제출 시각아이디문제언어결과실행 시간메모리
110371pamajExhibition (JOI19_ho_t2)C++14
50 / 100
91 ms10208 KiB
#include <bits/stdc++.h> using namespace std; const int maxn = 1e3; int N, M; int m[maxn]; int dp[maxn][maxn]; struct pic { int val, sz; bool operator<(const pic& a) const { if(val == a.val) return sz < a.sz; return val < a.val; } }v[maxn]; int solve(int i, int j) { if(i == N or j == M) return 0; if(dp[i][j] != -1) return dp[i][j]; int caso1 = solve(i + 1, j); int caso2 = solve(i, j + 1); int caso3 = 0; if(v[i].sz <= m[j]) caso3 = solve(i + 1, j + 1) + 1; return dp[i][j] = max({caso1, caso2, caso3}); } int main() { memset(dp, -1, sizeof(dp)); cin >> N >> M; for(int i = 0; i < N; i++) { cin >> v[i].sz >> v[i].val; } for(int i = 0; i < M; i++) cin >> m[i]; sort(v, v + N); sort(m, m + M); cout << solve(0, 0) << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...