#include <stdio.h>
#include <stdlib.h>
#include <cstdio>
#include <cstring>
#include <string>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <math.h>
#include <map>
#include <vector>
using namespace std;
const int maxn=317;
int A[100010],N,length=0;
int harsh[100010]={0};
int block[317]={0};
char s[20];
int outh(int k)
{
int sum=0;
int i=0;
while(sum+block[i]<k)
{
sum+=block[i];
i++;
}
int index=i*316;
while(sum+harsh[index]<k)
{
sum+=harsh[index];
index++;
}
return index;
}
int main()
{
scanf("%d",&N);
for(int i=0;i<N;i++)
{
scanf("%s",&s);
if(strcmp(s,"Push")==0)
{
int a;
scanf("%d",&a);
A[length++]=a;
harsh[a]++;
block[a/316]++;
}
else if(strcmp(s,"Pop")==0)
{
if(length==0)
{
printf("Invalid\n");
}
else
{
length--;
printf("%d\n",A[length]);
harsh[A[length]]--;
block[A[length]/316]--;
}
}
else if(strcmp(s,"PeekMedian")==0)
{
if(length==0)
{
printf("Invalid\n");
}
else
{
if(length%2==1)
{
int a=outh((length+1)/2);
printf("%d\n",a);
}
else
{
int a=outh(length/2);
printf("%d\n",a);
}
}
}
}
system("pause");
return 0;
}
PAT甲1057 Stack (30)
猜你喜欢
转载自blog.csdn.net/yhy489275918/article/details/80425845
今日推荐
周排行