답안 #886963

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
886963 2023-12-13T09:28:35 Z efedmrlr Gym Badges (NOI22_gymbadges) C++17
0 / 100
319 ms 32528 KB
#include <bits/stdc++.h>

#define int long long int
#define MP make_pair
#define REP(i,n) for(int i = 0; (i)<(n); (i)++)
#define pb push_back

const int N = 5e3+5;
const int MOD = 1e9+7;
const int INF = 1e17;
using namespace std;

void fastio() {
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
}
int n,m,q;
vector<int> dp(N, INF), dpnew(N, INF);
vector<int> L, X;
vector<array<int,2> > srt;
bool comp(array<int,2> &x, array<int,2> &y) {
    return x[0] + x[1] < y[0] + y[1];
}
void solve() {
    cin>>n;
    srt.resize(n);
    L.assign(n+1, 0);
    X.assign(n+1, 0);
    REP(i,n) cin>>srt[i][0];
    REP(i,n) cin>>srt[i][1];
    dp[0] = 0;
    sort(srt.begin(), srt.end(), comp);
    REP(i,n) {
        X[i + 1] = srt[i][0];
        L[i + 1] = srt[i][1];
    }
    for(int i = 1; i<=n; i++) {
        for(int j = 0; j<=n; j++) {
            dpnew[j] = INF;
            if(j > 0 && dp[j - 1] <= L[i]) {
                dpnew[j] = min(dpnew[j], dp[j - 1] + X[i]);
            } 
            if(dp[j] <= L[i]) {
                dpnew[j] = min(dpnew[j], dp[j]);
            }
        }
        swap(dp, dpnew);
    }
    // for(int i = 0; i<=n; i++) {
    //     cout<<dp[i]<<" ";
    // }
    // cout<<"\n";
    for(int i = n; i>=0; i--) {
        if(dp[i] < INF) {
            cout<<i<<"\n";
            return;
        }
    }

}

signed main() {
    // fastio();
    solve();
}   
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 319 ms 32528 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -