ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

洛谷P1068 分数线划定

2019-10-19 19:56:41  阅读:276  来源: 互联网

标签:mline 洛谷 floor int num mscore P1068 score 分数线


https://www.luogu.org/problem/P1068

 

#include<bits/stdc++.h>
using namespace std;
struct Can {
    int num;
    int score;
} can[5001];
bool compare1(Can a, Can b) {
    return a.score > b.score;
}
bool compare2(Can a, Can b) {
    return a.num < b.num;
}
int n, m;
int mline, mscore;
int head = 0, tail = 1, mid;
int main() {
    cin >> n >> m;
    for (int i = 0; i < n; i++)
        cin >> can[i].num >> can[i].score;
    sort(can, can + n, compare1);  //按成绩排序  从大到小
    mline = floor(1.5*m);  //floor取不大于x的最大整数   人数 
    mscore = can[mline - 1].score;  //面试成绩   因为从0开始的,所以要减一 
    for (int i = floor(1.5*m); i < n; i++)   //查看往后是否存在相同的成绩 
        if (can[i].score == mscore)  //如果存在,加一 
            mline++;          //计算面试总人数
    mid = can[0].score;
    for (int i = 1; i <= mline; i++) {
        if (can[i].score != mid) {   //判断成绩是否相同
            sort(can + head, can + tail + head, compare2);    //如果没有相同的,相当于给自己排序
            head = head + tail;    //排头相加
            tail = 1;           //如果重新开始,要重新定义的。
            mid = can[head].score;   //重新定义排头
        } else tail++;    //当相同的时候,tail++,然后给相同的按编号排序
    }
    cout << mscore << " " << mline << endl;
    for (int i = 0; i < mline; i++)
        cout << can[i].num << " " << can[i].score << endl;
    return 0;
}

 

标签:mline,洛谷,floor,int,num,mscore,P1068,score,分数线
来源: https://www.cnblogs.com/QingyuYYYYY/p/11704955.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有