백준 2073 c++ : DP, 배낭문제

#include <iostream>
#include <vector>
using namespace std;
void input_data(int* D, int* P, vector<pair<int, int>>& pipe) {
cout << "\ninput_data()\n";
int i, L, C;
cin >> *D >> *P;
for (i = 0; i < *P; i++) {
cin >> L >> C;
pipe.push_back({ L, C });
}
return;
}
int find_answer(int D, int P, vector<pair<int, int>>& pipe) {
cout << "\nfind_answer()\n";
int answer = 0;
int i, j, k;
int L, C;
//vector<vector<int>> DP(P, vector<int>(D + 1, 0));
vector<int> DP(D + 1, 0);
DP[0] = 2100000000;
//L은 길이, C는 용량
//수도관의 용량은 그것을 이루는 파이프들 중 최소값...
// 용량이 1, 7, 2인 파이프들로 만들었다면 해당 수도관 용량은 1
for (i = 0; i < P; i++) {
L = pipe[i].first;
C = pipe[i].second;
for (j = D; j >= L; j--) {
DP[j] = max(DP[j], min(DP[j - L], C));
}
for (j = 1; j <= D; j++) {
cout << DP[j] << " ";
}
cout << "\n";
}
answer = DP[D];
return answer;
}
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int D, P;
vector<pair<int, int>> pipe;
input_data(&D, &P, pipe);
cout << find_answer(D, P, pipe) << "\n";
return 0;
}