| 比赛 | 暑假培训B班二测 | 评测结果 | AAAAAAAAAAA | 
    | 题目名称 | 待售干草 | 最终得分 | 100 | 
    | 用户昵称 | 王者自由 | 运行时间 | 0.377 s | 
    | 代码语言 | C++ | 内存使用 | 0.69 MiB | 
    | 提交时间 | 2012-07-22 10:25:44 | 
显示代码纯文本
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 5000 + 10;
int c, h, v[N], f[2][N*10];
int main() {
    freopen("hay4sale.in", "r", stdin);
    freopen("hay4sale.out", "w", stdout);
    scanf("%d %d", &c, &h);
    for(int i=1; i<=h; i++)
        scanf("%d", v+i);
    for(int i=1; i<=h; i++)
        for(int j=1; j<=c; j++)
            f[i%2][j] = j < v[i] ?  f[!(i%2)][j]
                : max(f[!(i%2)][j], f[!(i%2)][j-v[i]] + v[i]);
    printf("%d\n", *max_element(f[h%2]+1, f[h%2]+c+1));
    return 0;
}