제출 #751023

#제출 시각아이디문제언어결과실행 시간메모리
751023LucaLucaMExam (eJOI20_exam)C++17
14 / 100
1085 ms1108 KiB
#include <bits/stdc++.h>

using namespace std;

const int NMAX = 1e5;

int n;
int a[NMAX + 5], b[NMAX + 5];
int vec[NMAX + 5];
int maxim[15][15];
int val[15];
int ans = 0;

void bkt (int k)
{
    if (k > n)
    {
        for (int i=1; i<=n; i++)
            val[i] = a[i];
        int curr = 0;
        for (int i=1; i<=n; i++)
        {
            for (int j=i; j<=vec[i]; j++)
                val[j] = max(val[j], maxim[i][vec[i]]);
            curr += (val[i] == b[i]);
        }
        ans = max(ans, curr);
    }
    for (int i=k; i<=n; i++)
    {
        vec[k] = i;
        bkt(k+1);
    }
}

int main()
{
    cin >> n;
    for (int i=1; i<=n; i++)
        cin >> a[i];
    for (int i=1; i<=n; i++)
        cin >> b[i];
    bkt(1);
    if (n <= 10)
    {
        for (int i=1; i<=n; i++)
        {
            maxim[i][i] = a[i];
            for (int j=i+1; j<=n; j++)
                maxim[i][j] = max(maxim[i][j-1], a[j]);
        }
        bkt(1);
        cout << ans;
        return 0;
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...