1842 vector<int> p = vector<int>(n);
1843 vector<int> v = vector<int>(n);
1844 for(
int i = 0; i < n; i++) {
1845 cin >> p[i] >> v[i];
1847 vector<status> dp = vector<status>(c + 1, status{
1849 .free = vector<bool>(n,
true)});
1851 for(
int i = 0; i <= c; i++) {
1852 for(
int j = 0; j < n; j++) {
1853 max_v = max(max_v, dp[i].v);
1855 int next_v = dp[i].v + v[j];
1856 int next_c = i + p[j];
1857 if(next_c <= c && next_v > dp[next_c].v) {
1858 dp[next_c].v = next_v;
1859 dp[next_c].free = vector<bool>(dp[i].free);
1860 dp[next_c].free[j] =
false;
1865 cout << max(max_v, dp[c].v);