알고리즘

[알고리즘] 백준 16493 - 최대 페이지 수

blueberrysoda 2024. 7. 3. 23:59
#include <iostream>
using namespace std;

int N, M;
int Arr[21];
int Pag[21];
int DP[21][201];
int Ans;

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

    int a, b;
    for(int i=1; i<=M; i++){
        cin >> Arr[i] >> Pag[i];
    }

    for(int i=1; i<=M; i++){
        for(int j=N; j>=0; j--){
            if(j - Arr[i] >= 0){
                DP[i][j] = max(DP[i-1][j], DP[i-1][j - Arr[i]] + Pag[i]);
            }
            else{
                DP[i][j] = DP[i-1][j];
            }
            Ans = max(Ans, DP[i][j]);
        }
    }

    cout << Ans << "\n";

    return 0;
}