题目链接:https://www.luogu.org/problemnew/show/P1068
水题,只要排个序就好了。
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
const int MAX_N = 5050;
int n, m;
struct node {
int name, grade;
}a[MAX_N];
int cmp (node a, node b) {
if (a.grade == b.grade) return a.name < b.name;
else return a.grade > b.grade;
}
void solve () {
sort (a + 1, a + n + 1, cmp);
int cont = (int) m * 1.5;
if (cont >= n) cont = n;
while (a[cont].grade == a[cont + 1].grade) cont ++;
cout << a[cont].grade << " " << cont << endl;
for (int i = 1; i <= cont; i++)
cout << a[i].name << " " << a[i].grade << endl;
}
int main () {
cin >> n >> m;
for (int i = 1; i <= n; i++)
cin >> a[i].name >> a[i].grade;
solve ();
return 0;
}