Song Jiang's rank list UVALive

题目:按照所杀的敌人排名,所杀敌人相等的时候字典序小的排名在上,然后M个询问。

sort 可以对结构体排序,数组字符串比较s1<s2,strcmp(s1,s2)=-1,string类字符串大小比较可以直接比。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
typedef struct
{
    char name[50];
    int k;
}Pe;
int num[205];
Pe a[205];
int cmp(Pe x,Pe y)
{
    if(x.k!=y.k)
        return x.k>y.k;//按k的降序排列
    else
        return strcmp(x.name,y.name)<0;//按字典序从小到大排列
}
int main()
{
  int n;
  while(scanf("%d",&n),n)
  {
      for(int i=0;i<n;i++)
      {
          scanf("%s",a[i].name);
          scanf("%d",&a[i].k);
      }
      sort(a,a+n,cmp);
      for(int i=0;i<n;i++)
        printf("%s %d
",a[i].name,a[i].k);
      int t;
      scanf("%d",&t);
        int g=0;
        while(g<n)
        {
            num[g]=1;
            int c=2;
            while(a[g].k==a[g+1].k&&g+1<n)
            {
                num[g+1]=c;
                c++;
                g++;
            }
            g++;
        }
      for(int i=0;i<t;i++)
      {
          char s[50];
          scanf("%s",s);
          for(int i=0;i<n;i++)
          {
              if(!(strcmp(s,a[i].name)))
                 {
                     if(num[i]==1) printf("%d
",i+1);
                     else printf("%d %d
",i-num[i]+2,num[i]);

                 }
          }
      }
  }
  return 0;
}
原文地址:https://www.cnblogs.com/Twsc/p/7216020.html