日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1085. PAT单位排行 (25)

發布時間:2024/9/5 编程问答 34 如意码农
生活随笔 收集整理的這篇文章主要介紹了 1085. PAT单位排行 (25) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

每次 PAT 考試結束后,考試中心都會發布一個考生單位排行榜。本題就請你實現這個功能。

輸入格式:

輸入第一行給出一個正整數N(<=105),即考生人數。隨后N行,每行按下列格式給出一個考生的信息:

準考證號 得分 學校

其中“準考證號”是由6個字符組成的字符串,其首字母表示考試的級別:“B”代表乙級,“A”代表甲級,“T”代表頂級;“得分”是 [0,100] 區間內的整數;“學校”是由不超過6個英文字母組成的單位碼(大小寫無關)。注意:題目保證每個考生的準考證號是不同的。

輸出格式:

首先在一行中輸出單位個數。隨后按以下格式非降序輸出單位的排行榜:

排名 學校 加權總分 考生人數

其中“排名”是該單位的排名(從1開始);“學校”是全部按小寫字母輸出的單位碼;“加權總分”定義為“乙級總分/1.5 + 甲級總分 + 頂級總分*1.5”的整數部分;“考生人數”是該屬于單位的考生的總人數。

學校首先按加權總分排行。如有并列,則應對應相同的排名,并按考生人數升序輸出。如果仍然并列,則按單位碼的字典序輸出。

輸入樣例:

10
A57908 85 Au
B57908 54 LanX
A37487 60 au
T28374 67 CMU
T32486 24 hypu
A66734 92 cmu
B76378 71 AU
A47780 45 lanx
A72809 100 pku
A03274 45 hypu

輸出樣例:

5
1 cmu 192 2
1 au 192 3
3 pku 100 1
4 hypu 81 2
4 lanx 81 2

感冒了刷題腦子都短路,題目說的是把總分除以1.5或者乘以1.5,而不是看到一個就要計算,難怪最后一個點總是不對。。。
代碼:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
#include <algorithm>
using namespace std;
struct pat
{
char num[],school[];
int af,bf,tf,snum,f;
}s[];
int n,c,f;
char num[],school[];
map<string,int> q;
bool cmp(pat a,pat b)
{
if(a.f == b.f)
{
if(a.snum == b.snum)
{
return strcmp(a.school,b.school) < ;
}
return a.snum < b.snum;
}
return a.f > b.f;
}
void low(char *t)
{
for(int i = ;t[i];i ++)
t[i] = tolower(t[i]);
}
int main()
{
scanf("%d",&n);
for(int i = ;i < n;i ++)
{
scanf("%s%d%s",num,&f,school);
low(school);
if(!q[school])q[school] = ++ c,strcpy(s[c].school,school);
s[q[school]].snum ++;
if(num[] == 'A')s[q[school]].af += f;
else if(num[] == 'B')s[q[school]].bf += f;
else s[q[school]].tf += f;
}
for(int i = ;i <= c;i ++)
{
s[i].f = s[i].af + s[i].bf / 1.5 + s[i].tf * 1.5;
}
sort(s + ,s + c + ,cmp);
int d = ;
printf("%d\n",c);
for(int i = ;i <= c;i ++)
{
if(s[i].f != s[i - ].f)d = i;
printf("%d %s %d %d\n",d,s[i].school,s[i].f,s[i].snum);
}
}

總結

以上是生活随笔為你收集整理的1085. PAT单位排行 (25)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。