音痴又音痴的LT
时间限制:
4000 ms | 内存限制:
65535 KB
难度:
4
-
描述
-
LT最近一直在无限循环薛之谦的歌,简直都中毒了!可是呢…他的歌LT还是不会唱(其实不止他的歌LT不会唱,所有人的歌LT都不会唱…因为LT是标准的音痴)可是LT又很喜欢唱歌(所以LT不仅是音痴还是音痴)…没错,这对于LT的室友来说简直是噩梦…
现在呢,LT有N次操作,每次操作只会有两种可能:
I a: 表示着LT使用唱歌软件唱歌得到的分数。
Q k: 表示着LT想知道自己得到的第k小的分数是多少。(如果没有第k小,输出-1)
这个题一开始是2s。后来改了时间,改成4s之后我才做出来……
2s下有人做出来了,肯定还有比我这个更好的方法。我是直接用C++函数做的,没什么技术含量。就是碰巧前一天看了这个函数才做出来。
这个用时大概3s
#include<stdio.h>
#include<string.h>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
char ch[3];
int x;
vector<int>G;
vector<int> :: iterator it;
int main()
{
int n;
while(~scanf("%d",&n))
{
G.clear();
while(n--)
{
scanf("%s%d",ch,&x);
if(ch[0]=='Q')
{
if(G.size()<x)
{
printf("-1\n");
continue;
}
printf("%d\n",G[x-1]);
}
else
{
int k=G.size();
if(k==0)
G.push_back(x);
else
{
it=lower_bound(G.begin(),G.end(),x);
G.insert(it,x);
}
}
}
}
return 0;
}