Sicily 1027. MJ, Nowhere to Hide

1027. MJ, Nowhere to Hide

     写了比较长的代码,不过竟然一遍就Accept,甚慰吾心。312KB的运存是我水平的极限了,还好n<=20,此题的关键应该就是按字母排序
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;

struct ID{
       string id;
       string IP;
};
struct newID{
       string mid;
       string mj;
};
bool cmp(newID a,newID b)
{
     int la=a.mid.length(),lb=b.mid.length();
     for(int i=0;i<la||i<lb;i++)
     {
             if(a.mid[i]!=b.mid[i])
             return a.mid[i]<b.mid[i];
     } 
     return la<lb;
}
int main()
{
        int n;
        while(cin>>n&&n)
        {
              ID acmer[21];
              newID acme[11];
              bool acm[21];
              int count=0;
              for(int i=0;i<n;i++)
              {
                      cin>>acmer[i].id>>acmer[i].IP;
                      acm[i]=true;
              }
              for(int i=0;i<n;i++)
              {
                  if(acm[i])
                  for(int j=i+1;j<n;j++)
                  {
                       if(acm[j])
                       {
                           if(acmer[i].IP==acmer[j].IP)
                           {
                               acme[count].mid=acmer[i].id;
                               acme[count].mj=acmer[j].id;
                               count++;
                               acm[i]=acm[j]=false;
                           }
                       }
                  }
              }
              sort(acme,acme+count,cmp);
              for(int i=0;i<count;i++)
              {cout<<acme[i].mj<<" is the MaJia of "<<acme[i].mid<<endl;}
              cout<<endl;
        }
        return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值