裸的二维费用背包
#include <iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,k;
int a[1005];//消耗精灵球
int b[1005];
int result[1005][1005];
int main()
{
cin >> n >> m >> k;
for( int i = 1; i <= k; i++ )
cin >> a[i] >> b[i];
for( int i = 1; i <= k; i++ )
for( int j = n; j >= a[i]; j-- )
for( int k = m; k >= b[i]; k-- )
result[j][k] = max(result[j][k],result[j-a[i]][k-b[i]] + 1);
int ans = 0;
int R = m;
for( int k = 1; k <= m; k++ )
{
if( result[n][k] > ans )
{
ans = result[n][k];
R = m - k;
}
}
cout << ans << ' ' << R <<endl;
return 0;
}