Type: Default 1000ms 512MiB

无序向量去重

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

时间限制: 1.0 秒

空间限制: 256 MB

题目描述

给定一个长度为 nn无序向量 a0,...,an1a_0,...,a_{n-1},请将该向量进行去重,对于不同的值,以他们在该向量中第一次出现的位置进行先后排序。

交互方式

这是一道函数式交互题,不需要选手考虑输入输出,也不要从标准输入读入数据,或将任何内容输出到标准输出,否则会影响判题。

你提交的代码需要包含头文件 unique.h

你需要实现一个函数 std::vector<long long>(const std::vector<long long>&),传入参数为一个 long long 无序向量。返回值为去重之后的 long long 无序向量。本题向量的具体形式是已知的,但是你无法直接修改传入的无序向量。

以下我们给出一个代码提交实例(会固定返回传入的无序向量,仅作为示例,不保证能得分):

#include "unique.h"
std::vector<long long> unique(const std::vector<long long>& a)
{
    return a;
}

你不需要,也不应该,实现主函数。

白盒交互库实例

具体请见附加文件区的 interactor.ccunique.h。需要注意的是,该白盒交互库并非实际评测使用的交互库

如果你本地的实现代码为 main.cc,则将交互库放在同一目录下,在 Linux 系统中输入以下命令行即可运行:

g++ main.cc interactor.cc -Wall -std=c++20 -o foo -lm -O2 -I/include

在 Windows 下会生成 foo.exe,在 Linux 下会生成 foo,你可以输入 .\foo.exe 或者 ./foo 命令行执行该文件。或者将交互库接口与你实现的函数统一在单代码文件中进行本地调试即可。

6
1 1 4 5 1 4
1 4 5

样例 1 解释

去重后的向量规模没有直接在样例中输出,输出数字的个数即为向量规模。由于 11 的第一次出现位置比 44 靠前,因此最终结果 1144 的前面。

子任务

对于所有数据,保证 1n5×105, 1ai10121\le n\le 5\times 10^5,~1\le a_i\le 10^{12}

  • 子任务 1(50 分):n2000n\le 2000
  • 子任务 2(50 分):无特殊限制。

提示

chap 02 向量,无序向量去重,习题解析 [2-12]。

子任务的设置分别对应了该习题的 (a) (b) (c) 三个小问。

本题投稿人:新威考研