#include#include #include using namespace std; const int N = 1010, M = 510; int V1, V2, n; int f[N][M]; // f[i][j] 需要i精灵球的数量,受到的伤害是j,表示收获最多的精灵个数 int main() { cin >> V1 >> V2 >> n; for (int i = 1; i <= n; i++) { int v1, v2; cin >> v1 >> v2; for (int j = V1; j >= v1; j--) { for (int k = V2 - 1; k >= v2; k--) { // 受到的伤害 f[j][k] = max(f[j][k], f[j-v1][k-v2]+1); // 选择了最大的数量 } } } int cost = V2 - 1; for(int i = 0; i <= cost; i ++) { if(f[V1][i] == f[V1][V2-1]) { cost = min(cost, i); } } cout << f[V1][cost] << " " << V2 - cost << endl; }



