PTA特色题目 语言 stl语法 乱七八糟

L2-027 名人堂与代金券

2019-03-17  本文已影响0人  smatrcHendsa

这种排序题竟然没写出来 血亏 比赛的时候脑子一抽用map去了
老是不知道怎么写比较器怎么破
https://pintia.cn/problem-sets/994805046380707840/problems/994805055176163328

#include <stdio.h>
#include <iostream>
#include <cstring>
#include <vector>
#include <queue>
#include <map>
#include <set>
#include <sstream>
#include <algorithm>
using namespace std;
int N, G, K;
const int si = 10007;
struct Node {
    int v;
    string s;
};
bool cmp (Node x, Node y){
    if (x.v != y.v) return x.v > y.v;
    return x.s < y.s;
};
Node no[si];
int cnt = 0;

int main() {
    cin >> N >> G >> K;
    int sum = 0;
    for (int i = 0; i < N; i++) {
        string str; int a;
        cin >> str >> a;
        if (a >= G) {
            sum += 50;
        }
        if (a >= 60 && a < G) {
            sum += 20;
        }
        no[cnt].v = a;
        no[cnt++].s = str;
    }
    
    cout << sum << endl;
    sort(no, no + cnt, cmp);
    int num = 0;
    while (num < K) {
        int tp = 0;
        while(no[num + tp].v == no[num + tp + 1].v) {
            printf("%d ", num + 1);
            cout << no[num + tp].s;
            printf(" %d\n", no[num + tp].v);
            tp++;
        }
        printf("%d ", num + 1);
        cout << no[num + tp].s;
        printf(" %d\n", no[num + tp].v);
        num += tp + 1;
    }
    return 0;
}
上一篇下一篇

猜你喜欢

热点阅读