Description
Input
Output
只打印一个整数 - 只用一次技巧来唤醒Mishka,他可以记下的定理的最大数量。
Sample Input
Input
6 3 1 3 5 2 5 4 1 1 0 1 0 0
Output
16
Hint
在示例情况下,最好的方法是在第三分钟开始时使用。 那么Mishka将能记下的定理数将等于16。
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
int main()
{
int n,k,i,j,a[100010],b[100010],ans1=0,ans=0,maxx=-1;
scanf("%d%d",&n,&k);
for(i=0; i<=n-1; i++)
scanf("%d",&a[i]);
for(i=0; i<=n-1; i++)
{
scanf("%d",&b[i]);
if(b[i]==1)
ans+=a[i];
}
for(i=0; i<=k-1; i++)
{
if(b[i]==0)
ans1+=a[i];
}
i=0;j=i+k-1;
while(1)
{
maxx=max(maxx,ans+ans1);
if(b[i]==0)
ans1-=a[i];
i++;
j++;
if(j==n)
break;
if(b[j]==0)
ans1+=a[j];
}
printf("%d\n",maxx);
}