用什么办法快速求最大值?
#include<bits/stdc++.h>
#define maxn 200010
int findmax(void);
int command,storage[maxn],result[maxn],count=0,mass,n,resultcount=0,maxmass=0;
//命令操作,库存每个箱子的质量,每次查询的输出结果,库存的箱子数量,新增的质量,操作次数,需要输出的结果数
int main()
{
scanf("%d",&n);
for(int i=0;i<=n-1;i+=1)
{
scanf("%d",&command);
switch(command)
{
case 0:
{
scanf("%d",&mass);
storage[count]=mass;
if(storage[count]>maxmass) maxmass=storage[count];
count+=1;
break;//箱子的数量+1,新增的箱子质量为mass
}
case 1:if(count!=0)
{
if(storage[count-1]==maxmass)//最大的箱子被拿掉了
{
storage[count-1]=0;
maxmass=findmax();//重新计算最大值
count-=1;
break;
}
else
{
storage[count-1]=0;
count-=1;
break;
}
break;
}//没有箱子时略过,否则去掉最后一个箱子,箱子的数量减少1
case 2:result[resultcount]=maxmass;resultcount+=1;break;//将每次查询的结果存入数组
default:break;
}
}
for(int i=0;i<=resultcount-1;i+=1) printf("%d\n",result[i]);
exit(0);
}
int findmax(void)//求最大值
{
int max=0;
for(int i=0;i<=count;i+=1) if(storage[i]>max) max=storage[i];
return max;
}