50109. H-index

難度:3.5/5

如果沒有hint的話應該有4。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct{
char name[16];
int n;
} scholar;

int cmp(const void* a, const void* b){
int rtv = strcmp(((scholar*)a)->name, ((scholar*)b)->name);
if(rtv != 0) return rtv;
else if(((scholar*)a)->n > ((scholar*)b)->n) return -1;
else if(((scholar*)a)->n == ((scholar*)b)->n) return 0;
else return 1;
}

scholar arr[20000];
int cnt = 0;

static inline void get_index(int l, int r){
int p = 0;
for(int i = l; i <= r; i++){
p++;
if(arr[i].n < p){
p--;
break;
}
}
printf("%s %d\n", arr[l].name, p);
}

int main(){
while(scanf("%s %d", arr[cnt].name, &arr[cnt].n) != EOF) cnt++;

qsort(arr, cnt, sizeof(scholar), cmp);

for(int i = 0; i < cnt; i++){
int last = i;
while(last < cnt && strcmp(arr[i].name, arr[last].name) == 0) last++;
get_index(i, last - 1);
i = last - 1;
}
}


50109. H-index
https://aaronlin1229.github.io/judgegirl_50109/
Author
Akizumi
Posted on
July 17, 2023
Licensed under