首页 > 试题广场 >

左侧严格小于计数

[编程题]左侧严格小于计数
  • 热度指数:1800 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}给定长度为 n 的整数序列 a_1,a_2,\dots,a_n,定义结果序列 b 为:

b_i = \bigl|\{j \mid 1 \le j < i \text{ 且 } a_j < a_i\}\bigr|,\quad 1 \le i \le n.

\hspace{15pt}请计算并输出序列 b_1,b_2,\dots,b_n

输入描述:
\hspace{15pt}第一行输入整数 n\ (1 \le n \le 100)
\hspace{15pt}第二行输入 n 个整数 a_1,a_2,\dots,a_n\ (0 \le a_i \le 10),以空格分隔。


输出描述:
\hspace{15pt}输出一行,包含 n 个整数 b_1,b_2,\dots,b_n,以空格分隔。
示例1

输入

5
1 2 3 4 5

输出

0 1 2 3 4
示例2

输入

6
4 4 2 1 3 5

输出

0 0 0 0 2 5

说明

\hspace{8pt}\bullet\, a_5=3 时,左侧小于 3 的元素为 \{4,4,2,1\} 中的 \{2,1\},共 2 个; 
\hspace{8pt}\bullet\, a_6=5 时,左侧所有 5 个元素均小于 5,共 5 个。
n = int(input())
a = list(map(int,input().split()))
b = []

for i in range(n):
    c=0 #需要将c在这里重置,否则会一直加上之前计数的个数
    for j in range(i):
        if (a[j] < a[i] and j < i):
            c += 1
    b.append(c)
    

for i in b:
    print(i,end=' ')


发表于 2025-07-02 17:28:31 回复(0)