1176: ¿Quién tomó el lugar k?
Límite de tiempo: 1000 ms Límite de memoria: 65536 KB
Confirmaciones: 21406 Pases: 9157
【Descripción del título】
En un examen, las calificaciones de cada alumno son diferentes. Ahora que conoce el número y la puntuación de cada alumno, busque el número y la calificación del alumno de k.
【Entrar】
Hay dos enteros en la primera línea, que son el número de estudiantes n (1≤n≤100) n (1≤n≤100) ≤n).
Hay nn filas de datos, cada fila incluye un número de estudiante (entero) y una calificación (punto flotante), separados por un espacio en el medio.
【Salida】
Emite el número de estudiante y los resultados del estudiante kkth, separados por espacios. (Nota: utilice% g% g para generar resultados)
【Ejemplo de entrada】
5 3
90788001 67.8
90788002 90.3
90788003 61
90788004 68.4
90788005 73.9
[Salida de muestra]
90788004 68.4
Explicación: Debido a que n (n <= 100) es demasiado pequeño (no se necesita una complejidad de tiempo óptima, lo mejor es fusionar nLogn), el burbujeo más simple (n ^ 2)
#include<bits/stdc++.h>
using namespace std;
struct xs{
int id;
double fenshu;
};
xs a[105],tmp;
int n,k;
void printa(){
for(int i=1;i<=n;i++){
cout<<a[i].id<<" "<<a[i].fenshu<<endl;
}
cout<<endl<<endl;
}
int main(){
freopen("test.in","r",stdin);
freopen("test.out","w",stdout);
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i].id>>a[i].fenshu;
}
// printa();
//冒泡
/*
i=1 1 2 3 4
j=1 2 1 3 4
j=2 2 3 1 4
j=3 2 3 4 1
i=2
j=1 3 2 4 1
j=2 3 4 2 1
i=3
j=1 4 3 2 1
*/
for(int i=1;i<=n;i++){
for(int j=1;j<=n-i;j++){
if(a[j].fenshu<a[j+1].fenshu){
tmp = a[j+1];
a[j+1] = a[j];
a[j] = tmp;
// 可以用 swap(a[j],a[j+1]);
}
// printa();
}
}
cout<<a[k].id<<" "<<a[k].fenshu<<endl;
return 0;
}