您的位置:首页 > 其它

codeforces Educational Codeforces Round 41 (Rated for Div. 2) for B problem

2018-04-06 17:30 495 查看
找半天以为是 long long 会炸,经调试后发现并不是,但是为什么会输出结果0?
原因为基础逻辑错误。当没有睡觉的时候我的maxx并没有更新数值!!!#include <bits/stdc++.h>
using namespace std;
long long int n,k,a[2][100005],b[100005],c[100005];
int main()
{
long long int sum=0;
cin>>n>>k;
for(int i=0;i<n;i++)
{
cin>>a[0][i];
c[i]=a[0][i]+c[i-1];
}
for(int i=0;i<n;i++)
cin>>a[1][i];
for(int i=0;i<n;i++)
{
sum+=a[0][i]*a[1][i];
b[i]=a[0][i]*a[1][i]+b[i-1];

}
// printf("sum=%d\n",c[0]);
int flag=0;
long long int maxx=0;
for(int i=0;i<n;i++)
{
if(!a[1][i])
{
int loca=i+k-1;
long long int ans=0;
if(loca>=n)
loca=n-1;
ans=c[loca]-c[i-1]+sum-(b[loca]-b[i-1]);
// cout<<ans<<" "<<c[loca]-c[i-1]<<endl;
if(ans>maxx)
{
flag=1;
maxx=ans;
}

}
}
if(flag)
cout<<maxx;
else
cout<<c[n-1];
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐