Submission #1355513

#TimeUsernameProblemLanguageResultExecution timeMemory
1355513mxhrvsBikeparking (EGOI24_bikeparking)C++20
0 / 100
1096 ms13268 KiB
#include <bits/stdc++.h>
using namespace std;

long long ans = -2e18; 


void f(int i, int mx, const vector<int>& users, const vector<int>& spots, vector<bool>& v) {
    if (i == users.size()) {
        if (mx > ans) {
            ans = mx;
        }
        return;
    }

    for (int i = 0; i < spots.size(); ++i) {
        if (!v[i]) {
            v[i] = true;
            
            int point = 0;
            if (spots[i] < users[i]) point = 1;      
            else if (spots[i] > users[i]) point = -1; 
            
            f(i + 1, mx + point, users, spots, v);
            
            v[i] = false;
        }
    }
}

int main() {
    int n;
    cin >> n;

    vector<long long> x(n), y(n);
    vector<int> v1;
    vector<int> v2;

    for (int i = 0; i < n; ++i) {
        cin >> x[i];
        for (int j = 0; j < x[i]; ++j) v1.push_back(i);
    }

    for (int i = 0; i < n; ++i) {
        cin >> y[i];
        for (int j = 0; j < y[i]; ++j) v2.push_back(i);
    }

    if (v2.empty()) {
        cout << 0 << endl;
        return 0;
    }

    vector<bool> v(v1.size(), false);

    f(0, 0, v2, v1, v);

    cout << ans << endl;

    return 0;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...