记录编号 239097 评测结果 AAAAAAEEEEEEEEEEE
题目名称 [Ural 1396] 最大值2 最终得分 35
用户昵称 GravatarGaoErFu 是否通过 未通过
代码语言 C++ 运行时间 0.845 s
提交时间 2016-03-19 18:00:28 内存使用 5.62 MiB
显示代码纯文本
#include<stdio.h>
int c[10010]={0};//c数组用于储存要查询的数的序号。 
int b[1000010][2]={0};//用于储存从1开始的到第N个数的各个数的对应值与最大值。 
int cc()
{
	freopen("Maximum.in","r",stdin);
	freopen("Maximum.out","w",stdout);
	int i=1,j,k,x,n,max1=0,max2=1;//max2为当前计算的最大值。 
	b[1][0]=1;
	b[1][1]=1;
	b[0][0]=0;
	b[0][1]=0;
	while(scanf("%d",&c[i])!=-1)
	{if(max1<c[i])max1=c[i];i++;c[0]++;}//输入各个要查询的数的序号 
	for(i=2;i<=max1;i++)
	{if(i%2==0&&i>=2)b[i][0]=b[i/2][0];
	else b[i][0]=b[(i-1)/2][0]+b[(i-1)/2+1][0];
	if(max2<b[i][0]){max2=b[i][0];}
	b[i][1]=max2;
	}
	for(i=1;i<c[0];i++)
	{printf("%d\n",b[c[i]][1]);}
	return 0;
}
int a=cc();
int main(){;}