p2412
一个字符串比较的题目,直接用string字符串数组超时,后来看题解题目中的一个细节,无论大小写,这就需要将大写的转换成小写字母来比较,如果使用sort排序既需要保留原来的序号数和原来的原字符串
#include <iostream>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
int n,m;
//首先按照小写的字典序
struct Na{
string c,s;//分别记录原字符串和进行比较的字符串
int id;//存放序号
}na[50005];
bool cmp(Na x,Na y)
{
return x.s>y.s;//细节从大到小排
}
int main()
{
cin>>n>>m;
string ss;
for(int i=1;i<=n;i++)
{
cin>>ss;
int l=sizeof(ss);
na[i].c=ss;
for(int j=0;j<l;j++)
{
if(ss[j]<='Z'&&ss[j]>='A')//大写转小写
ss[j]=ss[j]-'A'+'a';
}
na[i].s=ss;
na[i].id=i;
}
sort(na+1,na+n+1,cmp);
int x,y;
for(int i=1;i<=m;i++)
{
cin>>x>>y;
int j=1;
while(1)
{
if(na[j].id>=x&&na[j].id<=y) break;
j++;
}
cout<<na[j].c<<endl;
}
return 0;
}