이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |