题目链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805502658068480
按照要求输出rank成绩,没能AC,有空再看,下面是代码:
1 #include<iostream> 2 #include<vector> 3 #include<algorithm> 4 using namespace std; 5 const char ch[4] = {'A','C','M','E'}; 6 struct id{ 7 string num; 8 int e,c,m,a; 9 int e_order,c_order,m_order,a_order; 10 void sum(){ 11 a = (e+c+m)/3+0.5; 12 } 13 void best(){ 14 int x = a_order; 15 int y = 0; 16 if(c_order < a_order) x = c_order,y = 1; 17 if(m_order < a_order && m_order < c_order) x = m_order,y = 2; 18 if(e_order < a_order && e_order < c_order && e_order < a_order) x = e_order,y = 3; 19 cout << x << " " << ch[y] << endl; 20 } 21 }; 22 struct pai{ 23 int score; 24 int n; 25 friend bool operator <(pai v1,pai v2){ 26 return v2.score < v1.score; 27 } 28 }; 29 30 int main(){ 31 int n,m; 32 cin >> n >> m; 33 id x; 34 pai pa,pc,pm,pe; 35 vector<id> vec_id; 36 vector<pai> vec_c; 37 vector<pai> vec_m; 38 vector<pai> vec_e; 39 vector<pai> vec_a; 40 for(int i = 0; i < n; i++){ 41 cin >> x.num >> x.c >> x.m >> x.e; 42 x.sum(); 43 vec_id.push_back(x); 44 pa.n = i; 45 pa.score = x.a; 46 vec_a.push_back(pa); 47 pc.n = i; 48 pc.score = x.c; 49 vec_c.push_back(pc); 50 pe.n = i; 51 pe.score = x.e; 52 vec_e.push_back(pe); 53 pm.n = i; 54 pm.score = x.m; 55 vec_m.push_back(pm); 56 } 57 sort(vec_a.begin(),vec_a.end()); 58 sort(vec_m.begin(),vec_m.end()); 59 sort(vec_c.begin(),vec_c.end()); 60 sort(vec_e.begin(),vec_e.end()); 61 // for(int i = 0; i < n; i++){ 62 // cout << vec_a[i].score << endl; 63 // } 64 for(int i = 0; i < n; i++){ 65 vec_id[vec_a[i].n].a_order = i+1; 66 vec_id[vec_c[i].n].c_order = i+1; 67 vec_id[vec_m[i].n].m_order = i+1; 68 vec_id[vec_e[i].n].e_order = i+1; 69 } 70 /*int paiming = 1; 71 for(int i = 0; i < n; i++){ 72 if(i > 0 && vec_a[i].score != vec_a[i-1].score) 73 paiming = i+1; 74 vec_id[vec_a[i].n].a_order = paiming; 75 } 76 paiming = 1; 77 for(int i = 0; i < n; i++){ 78 if(i > 0 && vec_c[i].score != vec_c[i-1].score) 79 paiming = i+1; 80 vec_id[vec_c[i].n].c_order = paiming; 81 } 82 paiming = 1; 83 for(int i = 0; i < n; i++){ 84 if(i > 0 && vec_m[i].score != vec_m[i-1].score) 85 paiming = i+1; 86 vec_id[vec_m[i].n].m_order = paiming; 87 } 88 paiming = 1; 89 for(int i = 0; i < n; i++){ 90 if(i > 0 && vec_e[i].score != vec_e[i-1].score) 91 paiming = i+1; 92 vec_id[vec_e[i].n].e_order = paiming; 93 }*/ 94 string s; 95 while(m--){ 96 cin >> s; 97 bool flag = false; 98 for(int i = 0; i < n; i++){ 99 if(vec_id[i].num == s) vec_id[i].best(),flag = true; 100 } 101 if(!flag) cout << "N/A" << endl; 102 } 103 // vector<pai> vec; 104 // pai p1,p2,p3; 105 // p1.score = 2; 106 // p1.n = 1; 107 // p2.score = 5; 108 // p3.score = 3; 109 // vec.push_back(p1); 110 // vec.push_back(p2); 111 // vec.push_back(p3); 112 // sort(vec.begin(),vec.end()); 113 // for(int i = 0; i < 3; i++){ 114 // cout << vec[i].score; 115 // } 116 return 0; 117 }