#248. [CFCOI Collection 2] Sequence Crypto
[CFCOI Collection 2] Sequence Crypto
注意
题目来源:https://www.luogu.com.cn/problem/T686510
题目在导入时有改动。
本题是通信题。
请务必严格按照提交方式进行操作!!!
题目描述
给定一个均匀随机生成的序列 ,你需要对其进行加密传输:
- 程序 A 生成两个 的排列 。
- 程序 A 生成两个正整数 。
- 程序 B 得到以如下方式加密的序列 :
- 定义序列 初始等于 。
- 用 替换排列 中等于 的项。
- 用 替换排列 中等于 的项。
- 升序枚举 ,将 减去 。
- 枚举结束后的 即为加密后的序列。
- 程序 B 需要还原序列 。
提交方式
程序 A 模板
程序 A 需要读入:
- 第一行一个正整数 。
- 第二行 个正整数 。
程序 A 需要输出:
- 第一行两个正整数 。
- 第二行一个 的排列 。
- 第三行一个 的排列 。
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 12;
int a[N], x[N], y[N];
int main()
{
int n, X0 = 1, Y0 = 1;
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
for (int i = 1; i <= n + 1; i++)
x[i] = y[i] = i;
// ...
cout << X0 << ' ' << Y0 << endl;
for (int i = 1; i <= n; i++)
cout << x[i] << ' ';
cout << x[n + 1] << endl;
for (int i = 1; i <= n; i++)
cout << y[i] << ' ';
cout << y[n + 1] << endl;
return 0;
}
程序 B 模板
程序 B 需要读入:
- 第一行一个正整数 。
- 第二行 个整数 。
程序 B 需要输出:
- 一行 个正整数 。
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 12;
int a[N], b[N];
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
cin >> b[i];
// ...
for (int i = 1; i <= n - 1; i++)
cout << a[i] << ' ';
cout << a[n] << endl;
return 0;
}
总模板
请将你已经完成的程序 A 和程序 B 粘贴到下面模板中的指定位置,然后直接提交源代码。
// Paste your Program A here
/* ATTENTION!!! THIS IS THE BARRIER!!! */
// Paste your Program B here
注意事项
- 请务必使用以上模板,否则后果自负!!!
- 严禁攻击评测程序,否则按作弊处理!!!
- 你提交的源代码不得超过 行,总长度不得大于 字节。
- 我们编译你的代码时,所使用的编译参数为
-O2 -std=c++14。 - 本题的时间限制为 秒,空间限制为 512 MB,且均对两个程序分开计算。