手写栈模拟后三点全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;
}
求教