Submission #1265876

#TimeUsernameProblemLanguageResultExecution timeMemory
1265876trinm01Exhibition (JOI19_ho_t2)C++20
0 / 100
0 ms324 KiB
// #pragma GCC optimize("O3")
// #pragma GCC optimization("Ofast,unroll-loops")
// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#include <bits/stdc++.h>
using namespace std;

#define int long long 
#define ll long long
#define FOR(i, l, r) for (int i = (l); i <= (r); i++)
#define FOD(i, r, l) for (int i = (r); i >= (l); i--)
#define fi first
#define se second
#define pii pair<int, int>

const ll mod = 1e9 + 7;
const int MAXN = 3e3 + 5;
const ll oo = 1e18+7;  
const int base = 0;

int n, m;
pii a[MAXN];
int c[MAXN];

bool cmp(pii a, pii b){
    return a.se<b.se;
}

pii f[MAXN];

signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    // freopen("test.txt", "r", stdin);
    // freopen("o2.out", "w", stdout); 

    // if(fopen(".inp", "r")){
    //     freopen(".inp", "r", stdin);
    //     freopen(".out", "w", stdout);
    // }   

    cin >> n >> m;
    FOR(i, 1, n){
        cin >> a[i].fi >> a[i].se;
    }   
    FOR(i, 1, m){
        cin >> c[i];
    }

    sort(c+1, c+1+m);
    sort(a+1, a+1+n, cmp);
    c[m+1]=oo;

    FOR(i, 1, n){
        int x=lower_bound(c+1, c+1+m+1, a[i].fi)-c;
        pii ans=f[i-1];
        FOR(j, 1, i-1){
            int y=f[j].se;
            int xx=max(x, y+1);
            if(xx<=m){
                if(ans.fi<f[j].fi+1){
                    ans={f[j].fi+1, xx};
                }
                else if(ans.fi==f[j].fi+1){
                    if(ans.se>xx){
                        ans={f[j].fi+1, xx};
                    }
                }
            }
        }
        f[i]=ans;
    }

    cout << f[n].fi;
    
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...