From 2175f4f94c8876523642722b11723f26ad800904 Mon Sep 17 00:00:00 2001 From: hanyixuanten Date: Fri, 23 Oct 2026 10:56:41 +0000 Subject: [PATCH] new file: B3694.cpp --- B3694.cpp | 23 +++++++++++++++++++++++ B3694.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 B3694.cpp create mode 100644 B3694.md diff --git a/B3694.cpp b/B3694.cpp new file mode 100644 index 0000000..de692c6 --- /dev/null +++ b/B3694.cpp @@ -0,0 +1,23 @@ +#include +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"); + } +} \ No newline at end of file diff --git a/B3694.md b/B3694.md new file mode 100644 index 0000000..4d573e1 --- /dev/null +++ b/B3694.md @@ -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$。 \ No newline at end of file