//
// main.cpp
// PAT_1057. Stack
//
// Created by wjq on 17/5/16.
// Copyright © 2017年 wjq. All rights reserved.
//
#include <iostream>
#include <algorithm>
#include <stdio.h>
using namespace std;
int A[100005],a=-1,N,num;
char operation[20];
string temp;
int findNum()
{
int temp[100005];
for(int i=0;i<=a;i++)
temp[i]=A[i];
sort(temp,temp+a+1);
return temp[a/2];
}
int main(int argc, const char * argv[])
{
scanf("%d",&N);
getchar();
for(int i=0;i<N;i++)
{
gets(operation);
temp=operation;
switch (temp[1])
{
case 'o':
if(a==-1)
cout<<"Invalid"<<endl;
else
cout<<A[a--]<<endl;
break;
case 'e':
if(a==-1)
cout<<"Invalid"<<endl;
else
cout<<findNum()<<endl;
break;
case 'u':
num=atoi(temp.substr(5,temp.length()-5).c_str());
A[++a]=num;
break;
}
}
return 0;
}
3个case超时,网上查了之后是线段数组,没学过,以后填坑吧,现阶段只想快点把100题刷完.
复习了3个知识点
1.string 类型的怎么取部分串
xxx.substr(a,b);意思是取xxx串中从下标a开始的b个字符串.
2.string如何转换成char[]
xxx.c_str()
3.char[]如何转换成int
atoi(xxx);