Eternal Reality

来源:互联网 发布:jsp中调用java方法 编辑:程序博客网 时间:2024/04/30 15:34
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


using namespace std;
#define MAXN 111
int a[111];
int dp[111][111];
int main()
{
    int n, l, x, y;
    while(scanf("%d %d %d %d",&l, &n, &x, &y) != EOF)
    {
        for( int i = 1; i <= n; i++)
        scanf("%d",&a[i]);
       int ans = 0;
       if( l == 5)
       {
           for( int i = 1; i <= n; i++)
            if(l >= a[i])
              ans++;
            printf("%d\n",ans);
            continue;
       }
       memset(dp, 0, sizeof(dp));
       dp[1][0] = (l >= a[1] );
       dp[1][1] = (l + 1 >= a[1] );
       for( int i = 2; i <= n; i++)
       {
           dp[i][0] = dp[i-1][0] + (l >= a[i] );
           for( int j = 1; j < i; j++)
           {
             //j 局用的药没过劲
              if( i < j + x )
               dp[i][j] = dp[i-1][j] + (l+1 >= a[i] );
             // 后遗症
              else if( i < j + x + y)
               dp[i][j] = dp[i-1][j] + (0 >= a[i] );
             //过劲了
               else
                dp[i][j] = dp[i-1][j] + (l >= a[i]);
           }
          dp[i][i] = dp[i-1][0] + (l+1 >= a[i]);
          for( int k = 1; k <= i - x- y; k++)
           dp[i][i] = max(dp[i][i], dp[i-1][k]+ (l+1 >= a[i] ));
       }
      ans = 0;
      for( int i = 1; i <=n;i++)
        ans = max(ans, dp[n][i]);
      printf("%d\n",ans);
    }
}
0 0