已经AC了但是耗时>300毫秒
查看原帖
已经AC了但是耗时>300毫秒
855093
0x00AC3375楼主2023/2/18 18:11

用什么办法快速求最大值?

#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;
}
2023/2/18 18:11
加载中...