#include<bits/stdc++.h>
using namespace std;
#define endl "\n"
#define int long long
const int TAILLEMAXI=1002;
int dejavu[TAILLEMAXI][TAILLEMAXI]; /////////tab,cadre
int nbtableaux,nbcadres;
vector<pair<int,int>> tableaux;
vector<int> cadres;
int dp(int tabec,int cadreec){
if (cadreec>=nbcadres or tabec>=nbtableaux){
return 0;
}
if (dejavu[tabec][cadreec]!=-1){
return dejavu[tabec][cadreec];
}
int val=max(dp(tabec+1,cadreec),dp(tabec,cadreec+1));
if (tableaux[tabec].second<=cadres[cadreec]){
val=max(val,dp(tabec+1,cadreec+1)+1);
}
dejavu[tabec][cadreec]=val;
return val;
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>nbtableaux>>nbcadres;
for (int i=0;i<nbtableaux;i++){
for (int j=0;j<nbcadres;j++){
dejavu[i][j]=-1;
}
}
for (int i=0;i<nbtableaux;i++){
int s,v;
cin>>s>>v;
tableaux.push_back({v,s});
}
sort(tableaux.begin(),tableaux.end());
for (int i=0;i<nbcadres;i++){
int v;
cin>>v;
cadres.push_back(v);
}
sort(cadres.begin(),cadres.end());
cout<<dp(0,0)<<endl;
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... |