B1015/A1062,A1025

//b1015/a1062
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>

using namespace std;

struct People {
    int de, cai;
    int total;
    char id[10];
    int isClass;
} obj[100010];

bool cmp(People a, People b) {
    if (a.isClass != b.isClass)
        return a.isClass < b.isClass;
    else if (a.total != b.total)
        return a.total > b.total;
    else if (a.de != b.de)
        return a.de > b.de;
    else
        return strcmp(a.id, b.id) < 0;

}

int main() {
    int N, L, H;
    scanf("%d%d%d", &N, &L, &H);
    int count = 0;
    for (int i = 0; i < N; i++) {
        scanf("%s %d %d", obj[i].id, &obj[i].de, &obj[i].cai);
        obj[i].total = obj[i].de + obj[i].cai;
        if (obj[i].de >= H && obj[i].cai >= H) {
            obj[i].isClass = 1;
            count++;
        } else if (obj[i].de >= H && obj[i].cai < H && obj[i].cai >= L) {
            obj[i].isClass = 2;
            count++;
        } else if (obj[i].de < H && obj[i].cai < H && obj[i].de >= L && obj[i].cai >= L && obj[i].de >= obj[i].cai) {
            obj[i].isClass = 3;
            count++;
        } else if (obj[i].de >= L && obj[i].cai >= L) {
            obj[i].isClass = 4;
            count++;
        } else {
            obj[i].isClass = 5;
        }
    }

    sort(obj, obj + N, cmp);
    printf("%d\n", count);
    for (int i = 0; i < count; i++)
        printf("%s %d %d\n", obj[i].id, obj[i].de, obj[i].cai);
    return 0;
}

//a1025
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>

using namespace std;

struct Stu {
    char num[15];
    int score, position;
    int localRank;
    int finalRank;
} obj[30010];

bool cmp(Stu a, Stu b) {
    if (a.score == b.score)
        return strcmp(a.num, b.num) < 0;
    else
        return a.score > b.score;
}

int main() {

    int location;
    scanf("%d", &location);
    int index = 0;
    for (int i = 1; i <= location; i++) {
        int n;
        scanf("%d", &n);
        for (int j = 0; j < n; j++) {
            scanf("%s %d", obj[index].num, &obj[index].score);
            obj[index].position = i;
            index++;
        }

        sort(obj + index - n, obj + index, cmp);
        obj[index - n].localRank = 1;
        for (int j = index - n + 1; j < index; j++) {
            if (obj[j].score == obj[j - 1].score)
                obj[j].localRank = obj[j - 1].localRank;
            else
                obj[j].localRank = j - index + n + 1;
        }
    }

    sort(obj, obj + index, cmp);
    printf("%d\n", index);

    obj[0].finalRank = 1;
    printf("%s %d %d %d\n", obj[0].num, obj[0].finalRank, obj[0].position, obj[0].localRank);
    for (int i = 1; i < index; i++) {
        if (obj[i].score == obj[i - 1].score)
            obj[i].finalRank = obj[i - 1].finalRank;
        else
            obj[i].finalRank = i + 1;
        printf("%s %d %d %d\n", obj[i].num, obj[i].finalRank, obj[i].position, obj[i].localRank);
    }

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值