제출 #1349836

#제출 시각아이디문제언어결과실행 시간메모리
1349836madamadam3Heat Stroke (JOI24_heat)C++20
7 / 100
2094 ms432 KiB
#include <bits/stdc++.h>
using namespace std;
using vi = vector<int>;
using vvi = vector<vi>;
#define all(x) (x).begin(), (x).end()
#define rep(i, a, b) for (int i = a; i < b; i++)
#define rev(i, a, b) for (int i = a; i >= b; i--)

template<class T> bool chmin(T& a, const T& b) {return b < a ? a = b, 1 : 0;}
template<class T> bool chmax(T& a, const T& b) {return a < b ? a = b, 1 : 0;}

int main() {
    cin.tie(0)->sync_with_stdio(0);
    
    int L; cin >> L;
    vector<int> c(L); rep(i, 0, L) cin >> c[i];
    int n; cin >> n;
    vi x(n); for (auto &u : x) cin >> u;

    int ans = -1e9;
    for (int mask = 0; mask < 1<<n; mask++) {
        vi usage(L); bool ok = true;
        rep(i, 0, n) {
            if (mask & 1<<i) {
                if (usage[x[i]] >= c[x[i]] && usage[x[i]-1] < c[x[i]-1]) ok = false;
                usage[x[i]]++;
            } else {
                if (usage[x[i]-1] >= c[x[i]-1] && usage[x[i]] < c[x[i]]) ok = false;
                usage[x[i]-1]++;
            }
        }

        if (!ok) continue;
        int r = 0; rep(i, 0, L) r += max(0, usage[i] - c[i]);
        ans = max(ans, r);
    }
    cout << ans << "\n";
}
#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...