This commit is contained in:
1 parent
ac9df32e58
commit
2175f4f94c
2 files changed
+71
No files matched your search
@@ -0,0 +1,23 @@
|
||||
#include<bits/stdc++.h>
|
||||
using namespace std;
|
||||
int t;
|
||||
int n;
|
||||
int a[100005];
|
||||
int xl[100005];
|
||||
int main() {
|
||||
scanf("%d", &t);
|
||||
while(t--) {
|
||||
scanf("%d", &n);
|
||||
for(int i = 1; i <= n; ++i) {
|
||||
scanf("%d", &a[i]);
|
||||
xl[i] = a[i];
|
||||
}
|
||||
sort(a + 1, a + n + 1);
|
||||
int tot = unique(a + 1, a + n + 1) - a;
|
||||
for(int i = 1; i <= n; ++i) {
|
||||
int wher = lower_bound(a + 1, a + tot, xl[i]) - a;
|
||||
printf("%d ",wher);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
# B3694 【模板】数列离散化
|
||||
|
||||
## 题目描述
|
||||
|
||||
给定一个长度为 $n$ 的数列 $a$。定义 $\mathrm{rank}(i)$ 表示数列 $a$ 中比 $a_i$ 小的不同数字个数再加一。
|
||||
|
||||
对 $1 \leq i \leq n$,现在请你求出所有的 $\mathrm{rank}(i)$。
|
||||
|
||||
## 输入格式
|
||||
|
||||
**本题单测试点内有多组测试数据**。
|
||||
|
||||
输入的第一行是一个整数,表示数据组数 $T$。接下来依次给出每组数据的信息:
|
||||
|
||||
第一行是一个整数,表示数列长度 $n$。
|
||||
第二行有 $n$ 个整数表示数列 $a$,第 $i$ 个整数表示 $a_i$。
|
||||
|
||||
## 输出格式
|
||||
|
||||
对每组数据,输出一行 $n$ 个整数,用空格隔开,依次表示 $\mathrm{rank}(1)$ 到 $\mathrm{rank}(n)$。
|
||||
|
||||
## 输入输出样例 #1
|
||||
|
||||
### 输入 #1
|
||||
|
||||
```
|
||||
3
|
||||
3
|
||||
1 2 3
|
||||
5
|
||||
1 6 2 2 7
|
||||
4
|
||||
-1 -2 -3 -3
|
||||
```
|
||||
|
||||
### 输出 #1
|
||||
|
||||
```
|
||||
1 2 3
|
||||
1 3 2 2 4
|
||||
3 2 1 1
|
||||
```
|
||||
|
||||
## 说明/提示
|
||||
|
||||
### 数据规模与约定
|
||||
|
||||
对全部的测试点,保证 $1 \leq T \leq 5$,$1 \leq n \leq 10^5$,$-10^9 \leq a_i \leq 10^9$。
|
||||
Reference in new issue
Block a user