我裂开来
查看原帖
我裂开来
189839
_蒟蒻—信含_楼主2020/9/19 21:47

手写栈模拟后三点全T

玩nm

#include<iostream>
#include<cstdio>
#include<cmath>
#include<ctime>
#include<algorithm>
using namespace std;
long long x[200010],y[200010],n,rs=1,ry=1;
int main()
{
	freopen("tes.txt","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++)
	{
//		cin>>x[i];
//		y[i]=x[i];
		int r;
		cin>>r;
		if(r==0)
		{
			rs++;ry++;
			cin>>x[rs];
			y[ry]=x[rs];
		 } 
		if(r==1)
		{
			for(int i=1;i<=ry;i++)
			{
				if(x[rs]==y[i]&&y[i]!=0)
				{
					y[i]=0;
					break;
				}
			}
			rs--;
		}
		if(r==2)
		{
				sort(y+1,y+ry+1);
				cout<<y[ry]<<endl;
		}
	}
	return 0;
}

这是模拟

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstdlib>
using namespace std;
int r=0,der[300000],che[200060];
struct stack{
	void push(int x)
	{
		der[++r]=x;
//		che[++a]=x;
	};
	void pop()
	{
		der[r--];
//		che[a--];
	};
	void maxa()
	{
		int maxr=0;
		for(int j=1;j<=r;j++)
		{
			if(der[j]>maxr) maxr=der[j];
		}
		cout<<maxr<<endl;
//		sort(che+1,che+a+1);
//		cout<<che[a]<<endl;
	};
}s;
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		int b;
		scanf("%d",&b);
	/*	if(b==0)
		{
			int c;
			scanf("%d",&c);
			s.push(c);
		}
		if(b==1)
		{
			s.pop();
		}
		if(b==2)
		{
			s.maxa();
		}*/
		switch(b)
		{
			case 0:
				int c;
				scanf("%d",&c);
				s.push(c);
				break;
			case 1:
				s.pop();
				break;
			case 2:
				s.maxa();
				break;
		}
	}
	return 0;
}

这是栈

求教

2020/9/19 21:47
加载中...