Submission #1263109

#TimeUsernameProblemLanguageResultExecution timeMemory
1263109norman165Gift Exchange (JOI24_ho_t4)C++20
9 / 100
2604 ms1114112 KiB
#include <bits/stdc++.h>

#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define int long long
#define yes() cout << "YES\n"
#define no() cout << "NO\n"

using namespace std;
using ll = long long;
using ull = unsigned long long;
using ld = long double;

const int inf = 1e18;
const int mod = 1e9 + 7;
const int maxn = 1e6;
const int mod1 = 998244353;
const int mod2 = 1e18 + 1;
const int mod3 = 1e9 + 9;
const int mod4 = 333333333;
const int mod5 = 200000;
const int mod6 = 10007;
const int k = 3000;
const int w = 1e5;
const ld EPS = 1e-8;

int LOG = 30;

vector<vector<int>> g;
vector<int> mt, used;

bool dfs(int v) {
    if (used[v]) return 0;
    used[v] = 1;

    for (int& u : g[v]) {
        if (mt[u] == -1 || dfs(mt[u])) {
            mt[u] = v;
            return 1;
        }
    }

    return 0;
}

void solve() {
    int n;
    cin >> n;

    vector<int> a(n), b(n);
    for (int& i : a) cin >> i;
    for (int& i : b) cin >> i;

    int q;
    cin >> q;

    while (q--) {
        int l, r;
        cin >> l >> r;

        l--, r--;
        g.assign(n, vector<int> ());
        mt.assign(n, -1);
        used.assign(n, 0);

        for (int i = l; i <= r; i++) {
            for (int j = l; j <= r; j++) {
                if (i == j) continue;
                if (a[i] >= b[j]) g[i].push_back(j);
            }
        }

        int ans = 0;
        for (int i = l; i <= r; i++) {
            used.assign(n, 0);
            ans += dfs(i);
        }

        if (ans == r - l + 1) cout << "Yes\n";
        else cout << "No\n";
    }
}

signed main() {
    // cout.precision(16);

    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int t = 1;
    // cin >> t;

    while (t--) {
        solve();
    }
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...