제출 #1341244

#제출 시각아이디문제언어결과실행 시간메모리
1341244sallyBikeparking (EGOI24_bikeparking)C++20
0 / 100
1095 ms7408 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

signed main() {
    int N;
    cin >> N;
    vector<int> slot(N), person(N);
    for (int i = 0; i < N; i++) cin >> slot[i];
    for (int i = 0; i < N; i++) cin >> person[i];

    int ans = 0;
    // pool[i] = 還沒分配的 level i 使用者
    vector<int> pool(N, 0);

    for (int tier = 0; tier < N; tier++) {
        pool[tier] += person[tier]; // 加入這層的使用者
        int free = slot[tier];

        // 先分配給比 tier 高的使用者 → upvote
        for (int level = N-1; level > tier && free > 0; level--) {
            int take = min(pool[level], free);
            pool[level] -= take;
            free -= take;
            ans += take;
        }

        // 再分配給同等級 → 0
        int take = min(pool[tier], free);
        pool[tier] -= take;
        free -= take;
        // ans 不變
    }

    // 剩下的使用者只能往更高 tier → downvote
    for (int i = 0; i < N; i++) ans -= pool[i];

    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...