제출 #757962

#제출 시각아이디문제언어결과실행 시간메모리
757962roCatalystGym Badges (NOI22_gymbadges)C++14
9 / 100
418 ms5500 KiB
#include <bits/stdc++.h>
#define ll long long
using namespace std;

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

    vector<int> X;
    for (int i = 0; i < N; i++) {
        int Xi;
        cin >> Xi;
        X.push_back(Xi);
    }

    vector<int> L;
    for (int i = 0; i < N; i++) {
        int Li;
        cin >> Li;
        L.push_back(Li);
    }

    

    if (N > 10) {
        int ans = 0;
        sort(X.begin(),X.end());
        ll currLevel = 0;
        ll cap = L.back();

        vector<int>::iterator p = X.begin();
        while ((currLevel <= cap)&&(p!=X.end())) {
            ans++;
            currLevel += *p;
            p++;
        }

        cout << ans << endl;
    } else {
        int ans = 0;
        vector<pair<int,int>> pq; 
       
        
        for (int i = 0; i < N; i++) {
            pq.push_back(make_pair(X[i],L[i]));
        }
        sort(pq.begin(),pq.end());

        for(int i = 0; i < N; i++) {
            int currAns = 0;
            ll currLevel = 0;

            for (int j = i; j < N; j++) {
                if (currLevel > pq[j].second) {
                    j++;
                } else {
                    currAns++;
                    currLevel += pq[j].first;
                }
            }
            ans = max(ans,currAns);
        }

        cout << ans << endl;
    }
    
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...