首页 > 其他分享 >【一维数组】排名(rank)

【一维数组】排名(rank)

时间:2024-11-24 13:29:24浏览次数:5  
标签:同学 得分 一维 int rank 99 100001 数组 排名

题目描述

小 X 很关心自己在学校的表现。班主任手上有一本“个人得分记录本”,如果一位同学表现好就会加分,表现差则会扣分。学期结束,每位同学都得知了自己的个人得分。小 X 想知道其他同学情况如何,但由于排名不公布,他只好一个个去问班里的其他同学。

现在,小 X 手上有班里共 N 位同学的个人得分,他想知道每位同学的排名(得分相同则排名相同,见样例),可并不知道该如何计算,希望你帮帮他。


输入

第一行包含一个整数 N;

接下来 N 行,第 i 行包含一个整数 Ai​,表示第 i 位同学的得分。


输出

共 N 行,第 i 行包含一个整数,表示第 i 位同学的排名。


样例数据
输入
5
95
100
99
99
96
输出
5
1
2
2
4

数据范围限制

对于 30% 的数据,N≤10;

对于 60% 的数据,N≤1000;

对于 100% 的数据,1≤N≤100000,0≤Ai​≤100000。


代码
#include<bits/stdc++.h>
using namespace std;
int a[100001],b[100001],r[100001],maxa=INT_MIN;
int main()
{
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);//a[i]=第i个人的分数
		b[a[i]]++;//b[i]=分数为i的人数(i=得分)
		maxa=max(a[i],maxa);//求最高分
	}
	//r[i]=得分为i的人的排名
	for(int i=maxa-1;i>=0;i--) r[i]=r[i+1]+b[i+1];
	//r[i]=上一个人的排名+分数为i-1的人数 
	for(int i=1;i<=n;i++) printf("%d\n",r[a[i]]+1);
	return 0;
}

标签:同学,得分,一维,int,rank,99,100001,数组,排名
From: https://blog.csdn.net/Lonely_Boos/article/details/144006628

相关文章

  • [数组双指针] 0015. 三数之和
    文章目录1.题目链接2.题目大意3.示例4.解题思路5.参考代码1.题目链接15.三数之和-力扣(LeetCode)2.题目大意描述:给定一个整数数组nums。要求:判断nums中是否存在三个元素a、b、c,满足a+b+c==0。要求找出所有满足要求的不重复的三元组。说明:3≤n......
  • 两个有序数组合并
    #include<stdio.h>intmain(){intm;scanf("%d",&m);inta[m];for(inti=0;i<m;i++){scanf("%d",&a[i]);}intn;scanf("%d",&n);intb[n];for(inti=0;i&l......
  • 数据结构-链表、栈、动态数组、队列
    数据结构文章目录数据结构不透明指针定义优点应用场景不透明指针的实现定义不透明指针类型链表知识点节点(Node)头节点(Head)尾节点(Tail)单向链表双链表动态数组队列队列的链式存储队列的顺序存储栈栈的顺序存储栈的链式存储不透明指针定义不透明指针是指指向一个......
  • 动态规划(一)—— 基本工具(上)第一章节之动态规划的基础(上:一维)
    首先我们来想一想斐波那契数列,用递归实现?很显然,函数f(i)f(i)......
  • 2024年华为OD机试真题-数组拼接-Python-OD统一考试(E卷)
    最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客     每一题都含有详细的解题思路和代码注释,精选c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。题目描述现在有多组整数数组,需......
  • JS中使用new Array()与使用Array.from()方式创建二维数组的性能比较
    比较1,单次创建小额数组:1.通过newArray()方式functiont(){console.time();newArray(100).fill().map(()=>newArray(10));console.timeEnd();} 执行5次耗时:0.078125ms0.050048828125ms0.0380859375ms0.031005859375ms0.093017578125ms2.......
  • LeetCode---JZ85 连续子数组的最大和(二)
    示例代码importjava.util.*;publicclassSolution{publicint[]FindGreatestSumOfSubArray(int[]array){//记录到下标i为止的最大连续子数组和的最大值int[]dp=newint[array.length];dp[0]=array[0];intmaxsum=......
  • 《贪婪算法实战:寻找最短无序连续子数组的深度解析与实现》
    ......
  • LeetCode|384. 打乱数组(day22)
    作者:MJ昊博客:掘金、CSDN等公众号:程序猿的编程之路今天是昊的算法之路第22天,今天分享的是LeetCode第384题打乱数组的解题思路。这是一道中等难度的题目,要求我们实现一个算法,使得数组支持随机打乱和重置为初始顺序的功能,并且每种排列出现的概率应当相等。题目描述简要......
  • 2024-10-23:最高频率的 ID。用go语言,给定两个长度相等的整数数组 nums 和 freq, 其中num
    2024-10-23:最高频率的ID。用go语言,给定两个长度相等的整数数组nums和freq,其中nums中的每个元素表示一个ID,而freq中的每个元素表示对应ID在此次操作后出现的次数变化。如果freq[i]为正数,则表示在这次操作中nums[i]的ID会增加freq[i]次;如果freq[i]为负数,则表示在这次操作中nums[i......