题目链接:点击这里
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N = 1010;
int f[N][N];
int main()
{
int s, m, n; //s小智的精灵球数量、m皮卡丘初始的体力值、n野生小精灵的数量
scanf("%d%d%d", &s, &m, &n);
for(int i = 1; i <= n; ++i)
{
int a, b;
scanf("%d%d", &a, &b);
for(int j = s; j >= a; --j)
{
for(int k = m - 1; k >= b; --k)//当皮卡丘的体力小于等于0时,小智就必须结束狩猎
{
f[j][k] = max(f[j][k], f[j-a][k-b] + 1);
}
}
}
printf("%d", f[s][m - 1]);
int k = m - 1;
while(k > 0 && f[s][k-1] == f[s][m - 1]) k--;
printf(" %d", m - k);
return 0;
}