1025 PAT Ranking (25)

来源:互联网 发布:js 比较两个值 编辑:程序博客网 时间:2024/04/29 23:06

这里第一次自己尝试了map,以及iterator,这里主要最后的imp输出要用cout不能用printf,不知为何。string类型可以直接>或<比较

!!!printf("%s\n",imp->id.c_str()) ,这样就可以显示了!!!

这个是参考,不是很懂:http://blog.csdn.net/lv_zj/article/details/16114065

这是自己写的”

#include<iostream>
#include<vector>
#include<string>
#include<string.h>
#include<algorithm>
#include<map>
using namespace std;

class CA
{
public:
 enum{N=102,K=302};
 void run();
private:
 int n,k[N+1],sum;
 struct testee
 {
  string id;
  int score;
  int totrank;
  int location;
  int locrank;
  bool operator < (const testee &a) const
  {
   if(score>a.score)
    return true;
   else if((score==a.score)&&(id<a.id))
    return true;
   else
    return false;
  }
 };
 map<int,vector<testee> > mall,mp[N];
};

void CA::run()
{
 cin>>n;
 int i,j;
 sum=0;
 for(i=1;i<=n;i++)
 {
  cin>>k[i];
  sum=sum+k[i];
  for(j=1;j<=k[i];j++)
  {
   testee a;
   cin>>a.id;
   cin>>a.score;
   a.location=i;
   mall[a.score].push_back(a);
   //mp[i][a.score].push_back(a);
  }
 }
 printf("%d\n",sum);
 //if(sum==0)
  //return;
 map<int,vector<testee> >::iterator im;
 for(im=mall.begin();im!=mall.end();im++)
 {
  sort(im->second.begin(),im->second.end());
 }
 vector<testee>::iterator imp;
 /*for(i=1;i<=n;i++)
 {
  printf("%d\n",i);
 for(imp=mall[i].begin();imp!=mall[i].end();imp++)
 {
  cout<<imp->id<<' '<<imp->score<<endl;
 }
 }*/

 //printf("%s\n",mall[100][0].id);
 //printf("%s\n",mall[100][1].id);
 //printf("%s\n",mall[100][2].id);

 int tmp;
 int tm[N];
 int co[N];
 for(i=1;i<=n;i++)
 {
  co[i]=1;
 }
 int count=1;
 for(i=100;i>=0;i--)
 {
  tmp=count;
  for(j=1;j<=n;j++)
   tm[j]=co[j];
  for(imp=mall[i].begin();imp!=mall[i].end();imp++)
  {
   imp->totrank=tmp;
   imp->locrank=tm[imp->location];
   count++;
   co[imp->location]++;
   cout<<imp->id<<' '<<imp->totrank<<' '<<imp->location<<' '<<imp->locrank<<endl;
   //printf("%s %d %d %d\n",imp->id,imp->score,imp->totrank,imp->location);
  }
 }
}

int main()
{
 freopen("test.txt","r",stdin);
 CA *a=new CA;
 a->run();
 return 0;
}

0 0
原创粉丝点击