记录编号 |
174189 |
评测结果 |
AAAAAAAAAA |
题目名称 |
数字游戏 |
最终得分 |
100 |
用户昵称 |
forever |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.128 s |
提交时间 |
2015-07-31 17:09:39 |
内存使用 |
1.07 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int s[100005],n,l,t,temp,ans,temp1,flag;
int q[100005],h,tail,head;
inline int in()
{
temp1=0;
char c=getchar();
while(c<48||c>57)
{
if(c==45)
flag=1;
c=getchar();
}
for(;c>=48&&c<=57;c=getchar())
temp1=temp1*10+c-48;
if(flag)
{
flag=0;
return -temp1;
}
return temp1;
}
int main(){
freopen("ggame.in","r",stdin);
freopen("ggame.out","w",stdout);
n=in(),l=in(),t=in();
for(int i=1;i<=n;++i){
h=in();
s[i]=s[i-1]+h;
}
head=tail=0;
for(int i=l;i<=n;++i){
while(tail>head&&(i-q[head]>t||i-q[head]<l)) head++;//开始写成了q[head]>t了,就很牛逼的挂了;
temp=s[i-l];
while(tail>head&&temp<=s[q[tail-1]]) tail--;
q[tail++]=i-l;
if(tail>head){
ans=max(ans,s[i]-s[q[head]]);
}
}
printf("%d",ans);
}