首页 > 代码库 > 【HDOJ】5131 Song Jiang's rank list
【HDOJ】5131 Song Jiang's rank list
STL的使用。
1 /* 5131 */ 2 #include <iostream> 3 #include <map> 4 #include <cstdio> 5 #include <cstdlib> 6 #include <cstring> 7 #include <string> 8 #include <algorithm> 9 using namespace std;10 11 #define MAXN 20512 13 typedef struct {14 string s;15 int i, n;16 } hero_t;17 18 typedef struct node_t {19 int mmin, mmax;20 node_t() {}21 node_t(int a, int b) {22 mmin = a; mmax = b;23 }24 } node_t;25 26 hero_t heros[MAXN];27 28 bool comp(hero_t a, hero_t b) {29 if (a.n == b.n)30 return a.s < b.s;31 else32 return a.n > b.n;33 }34 35 int main() {36 int n, m;37 int i, j, k, id = 0;38 string s;39 node_t nd;40 41 ios::sync_with_stdio(false);42 43 #ifndef ONLINE_JUDGE44 freopen("data.in", "r", stdin);45 #endif46 47 while (cin>>n && n) {48 for (i=0; i<n; ++i) {49 heros[i].i = i;50 cin >>heros[i].s>>heros[i].n;51 }52 53 sort(heros, heros+n, comp);54 for (i=0; i<n; ++i)55 cout <<heros[i].s<<‘ ‘<<heros[i].n<<endl;56 57 map<string, node_t> tb;58 i = 0;59 while (i < n) {60 j = 1;61 while ((i+j)<n && heros[i+j].n == heros[i].n)62 ++j;63 if (j > 1) {64 for (k=0; k<j; ++k) {65 tb[heros[i+k].s] = node_t(k+1, i+1);66 }67 i += j;68 } else {69 tb[heros[i].s] = node_t(1, i+1);70 ++i;71 }72 }73 cin >>m;74 while (m--) {75 cin >>s;76 nd = tb[s];77 if (nd.mmin == 1)78 cout <<nd.mmax<<endl;79 else80 cout <<nd.mmax<<‘ ‘<<nd.mmin<<endl;81 }82 id = 0;83 }84 85 return 0;86 }
【HDOJ】5131 Song Jiang's rank list
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。