题意:给出考生id(分为乙级、甲级和顶级),取得的分数和所属学校。计算各个学校的所有考生的带权总成绩,以及各个学校的考生人数。最后对学校进行排名。

思路:本题的研究对象是学校,而不是考生!因此,建立学校的结构体Record,记录学校的校名,考生人数,排名,成绩等信息。利用map<校名,该学校对应的结构体>构造映射,然后在读入数据的时候就可以更新该学校的分数,学生人数。数据读入完毕后,根据计算规则求出各个学校的带权总成绩,再把结构体放到vector中排序一下,确定排名,就好了。

代码:

#include <cstdio>
#include <cctype>
#include <string>
#include <vector>
#include <map>
#include <iostream>
#include <algorithm>
#include <fstream>
using namespace std;

struct Record{
    int rank;
    string sch;
    int ScoreB,ScoreA,ScoreT,tws;
    int cnt;
    Record():rank(),sch(),ScoreA(),ScoreT(),tws(),cnt(){}
};
map<string,Record> mp;
vector<Record> vec;

bool cmp(Record a,Record b)
{
    if(a.tws!=b.tws) return a.tws>b.tws;
    else if(a.cnt!=b.cnt) return a.cnt<b.cnt;
    else return a.sch<b.sch;
}

int main()
{
    //ifstream cin("pat.txt");
    int n;
    cin>>n;
    string sch,id;
    int score;
    ;i<n;i++){
        cin>>id>>score>>sch;
        ;i<sch.size();i++)
            sch[i]=tolower(sch[i]);
        mp[sch].cnt++;
        mp[sch].sch=sch;
        ]=='B') mp[sch].ScoreB+=score;
        ]=='A') mp[sch].ScoreA+=score;
        else mp[sch].ScoreT+=score;
    }
    for(auto it:mp){
        Record rec=it.second;
        rec.tws=rec.ScoreB/1.5 + rec.ScoreA + rec.ScoreT*1.5;
        vec.push_back(rec);
    }
    sort(vec.begin(),vec.end(),cmp);
    ;i<vec.size();i++){
        ) vec[i].rank=;
        ].tws) vec[i].rank=vec[i-].rank;
        ;
    }
    cout<<vec.size()<<'\n';
    for(auto it:vec)
        cout<<it.rank<<' '<<it.sch<<' '<<it.tws<<' '<<it.cnt<<'\n';
    ;
}

最新文章

  1. offse
  2. PHP安全编程:对输出要进行转义
  3. PostMessager来对子父窗体进行跨域
  4. #在FLAT模式下,需要设置flat子网,VM的IP从这个设置的子网中抓取,这时flat_injected需要设置为True,系统才能自动获得IP,如果flat
  5. Swift语言学习之OC和Swift混编
  6. ASP.NET的运行原理与运行机制
  7. Android Proguard
  8. Ubuntu命令行下安装,卸载软件包的过程[转]
  9. week 与 strong区别 精辟的解释
  10. JAVA学习笔记 -- 数据结构
  11. React配合Webpack实现代码分割与异步加载
  12. C语言指针声明探秘
  13. 使用CodeDOM动态编译一个字符串表达式
  14. jmeter - 关联之正则表达式提取器
  15. 异常处理第三讲,SEH(结构化异常处理),异常展开问题
  16. maven中引入oracle驱动报错Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0
  17. html初识form表单
  18. java 编写函数将字符串的首尾空格删除。
  19. BASH 环境
  20. c#扩展函数

热门文章

  1. 将hibernate.cfg.xml文件都放到spring中时报错
  2. SpringBoot:竟然has no explicit mapping for /error
  3. Pycharm for mac 快捷键
  4. spring mvc:拦截器不拦截静态资源的三种处理方式
  5. Java中使用Log的方法
  6. Win7性能选项
  7. Codeforces Round #394 (Div. 2) B. Dasha and friends
  8. Spring核心AOP(面向切面编程)总结
  9. SBT构建工具
  10. Golang 编译成 DLL 文件