#include<bits/stdc++.h>
/*
void print_list(int arr[],int len){
printf("The list=[ ");
for(int i=0;i<len;i++) printf("%d, ",arr[i]);
printf("]\n");
}
*/
int main(){
int n,button1[105]={0},button2[105]={0},l1[105],c=1;
scanf("%d",&n);
for(int i=0;i<n*n;i++) scanf("%d",&l1[i]);
for(int i=0;i<n*n;i++) button1[l1[i]]+=1;
// print_list(button1,101);
for(int i=100;i>=0;i--){
if(button1[i]!=0){
button2[i] = c;
c+=button1[i];
}
}
// print_list(button2,101);
for(int i=0;i<n*n;i++){
printf("%d ",button2[l1[i]]);
if((i+1)%n==0) printf("\n");
}
return 0;
}
这份代码提交出去后,RE 了好多点,题目内容贴在上面的剪贴板,RE 原因是没有输出,但是我检查了好多次,结果都是正确的……
这里使用两次桶排,第一次记录这个分数的出现次数(存在 button1 里面),第二次记录这个分数的名次(存在 button2 里面)。请大佬批改!
注释掉的是打印列表的函数,大佬们可以自行解除注释,感谢!