果不其然,又是字符串操作题。
首先,我们很容易想到用struct来存每个妹子的信息。
那么根据题意,我们就需要定义这样一个结构体:
struct node{
string nm;//妹子的名字
ll rk;//妹子的评分
int x;//输入顺序
};题目中问法有些有趣:询问名字以某个字母结尾的妹子。
所以我们就可以定义一个数组,
表示结尾字符为
,排名第
的妹子。
所以再加上排序函数,整个程序就写好了。
不过,有一个问题:内存超了。
那怎么办?我们有万能的!
再加上这玩意有自带的排序函数,然后就写完了。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define f(i,a,b) for(int i=a;i<=b;i++)
inline ll r() {
ll x=0,f=1;
char c=getchar();
while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
while(isdigit(c))x=x*10+c-'0',c=getchar();
return x*f;
}
#define d r()
struct node{
string nm;
ll rk;
int x;
};
vector<node> g[26];
ll tmp[26];
bool cmp(node a,node b){
if(a.rk!=b.rk)return a.rk>b.rk;
else return a.x<b.x;
}
ll n,k;
int main(){
n=d,k=d;
f(i,1,n){
string s;
cin>>s;
g[s[s.size()-1]-'a'].push_back({s,d,i});
}
f(i,0,25)sort(g[i].begin(),g[i].end(),cmp);
while(k--){
char c;
ll now;
cin>>c;
now=d;
if(now>g[c-'a'].size())cout<<"Orz YYR tql\n";
else cout<<g[c-'a'][now-1].nm<<endl;
}
return 0;
}


京公网安备 11010502036488号