被Level 6坑了,不解释。。。
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
const int maxn=320;
int t,n,x,y;
int a[maxn];
int dp[maxn];
int work(int i)
{
return(a[i]<=t?1:0);
}
int main()
{
// freopen("in.txt","r",stdin);
while (~scanf("%d%d%d%d",&t,&n,&x,&y))
{
memset(dp,0,sizeof(dp));
for (int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
if (a[i]<=t) dp[i]++;
dp[i]+=dp[i-1];
}
for (int i=n+1;i<n+x+y;i++)
{
a[i]=10;
dp[i]=dp[i-1];
}
for (int i=1;i<=n;i++)
{
int s=0;
for (int j=i;j<i+x;j++)
if (a[j]<=t+1&&a[j]!=6) s++;
for (int j=i+x;j<i+x+y;j++)
if (a[j]==0) s++;
dp[i+x+y-1]=max(dp[i+x+y-1],dp[i-1]+s);
dp[i+x+y-1]=max(dp[i+x+y-1],dp[i+x+y-1-1]+work(i+x+y-1));
}
// for (int i=1;i<n+x+y;i++)
// cout<<i<<" "<<dp[i]<<endl;
int ans=0;
for (int i=1;i<n+x+y;i++)
ans=max(ans,dp[i]);
printf("%d\n",ans);
}
return 0;
}