比赛 20111108 评测结果 AAAAAAAAAA
题目名称 机房 最终得分 100
用户昵称 王者自由 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-11-08 09:13:52
显示代码纯文本
#include <cstdio>
#include <cstdlib>
int n, m, s, t, a[2510], f[2510];
inline int min(int x, int y) {
    return x<y?x:y;
}
int main() {
    freopen("orz.in","r",stdin);
    freopen("orz.out","w",stdout);
    scanf("%d %d", &n, &m);
    for(int i=1; i<=n; i++)
        scanf("%d", a+i);
    for(int i=1; i<=n; i++)
        f[i] = 0x7ffffff;
    f[0] = 0;
    for(int i=1; i<=n; i++) {
        s = t = 0;
        if(a[i] == 1) s = 1; else t = 1;
        for(int j=i-1; j>=0; j--) {
            if(!(abs(s - t) > m && !(s == 0 || t == 0)))
                f[i] = min(f[i], f[j] + 1);
            if(a[j] == 1) s++;
            if(a[j] == 2) t++;
        }
    }
    printf("%d\n", f[n]);
    return 0;
}