记录编号 174139 评测结果 AAAAAAAAAA
题目名称 [東方S1] 琪露诺 最终得分 100
用户昵称 Gravatarforever 是否通过 通过
代码语言 C++ 运行时间 0.057 s
提交时间 2015-07-31 14:41:56 内存使用 3.36 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<cstdlib>
using namespace std;
int n,l,r,f[200005];
int a[200005],q[200005];
int pre[200005];
int t,tail,head,temp,ans,num,id,flag,temp1;
char c;
inline int in()
{
	temp1=0;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;
}
void print(int y){
    
	if(pre[y]!=-1){
		print(pre[y]);
	}
	printf("%d ",y);
}
int main(){
	freopen("iceroad.in","r",stdin);
    freopen("iceroad.out","w",stdout);
	n=in(),l=in(),r=in();
	t=in();
	a[0]=t;
	for(int i=1;i<=n;++i){
		a[i]=in();
	}
	ans=-9999999;
	memset(pre,-1,sizeof(pre));
	head=0,tail=0;
	q[tail++]=0;
	for(int i=l;i<=n;++i)
		{
			if(i-l>0){
				while(tail>head&&(q[head]>i||(i-q[head])>r||(i-q[head])<l)) head++;
				temp=f[i-l];
				while(tail>head&&temp>f[q[tail-1]]) tail--;
				q[tail++]=i-l;
			    pre[i]=q[head];
				f[i]=f[q[head]]+a[i];
				if(f[i]>ans){
				  	ans=f[i];
					id=i;	
				}
			}
		}
	printf("%d\n",ans);
	//cout<<id<<endl;
	print(id);
	printf("-1");
}