A21015.[NOI2009] 变换序列

省选/NOI-

NOI

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

对于 NN 个整数 0,1,⋯ ,N−10, 1, \cdots, N-1,一个变换序列 TT 可以将 ii 变成 TiT_i,其中 Ti∈{0,1,⋯ ,N−1}T_i \in \{ 0,1,\cdots, N-1\} 且 ⋃i=0N−1{Ti}={0,1,⋯ ,N−1}\bigcup_{i=0}^{N-1} \{T_i\} = \{0,1,\cdots , N-1\}。∀x,y∈{0,1,⋯ ,N−1}\forall x,y \in \{0,1,\cdots , N-1\},定义 xx 和 yy 之间的距离 D(x,y)=min⁡{∣x−y∣,N−∣x−y∣}D(x,y)=\min\{|x-y|,N-|x-y|\}。给定每个 ii 和 TiT_i 之间的距离 D(i,Ti)D(i,T_i),你需要求出一个满足要求的变换序列 TT。如果有多个满足条件的序列,输出其中字典序最小的一个。

说明:对于两个变换序列 SS 和 TT,如果存在 p<Np<N,满足对于 i=0,1,⋯p−1i=0,1,\cdots p-1,Si=TiS_i=T_i 且 Sp<TpS_p<T_p,我们称 SS 比 TT 字典序小。

输入格式

第一行包含一个正整数 NN,表示序列的长度。接下来的一行包含 NN 个整数 DiD_i,其中 DiD_i 表示 ii 和 TiT_i 之间的距离。

输出格式

如果至少存在一个满足要求的变换序列 TT,则输出文件中包含一行 NN 个整数,表示你计算得到的字典序最小的 TT;否则输出 No Answer(不含引号)。注意:输出文件中相邻两个数之间用一个空格分开,行末不包含多余空格。

输入输出样例

  • 输入#1

    5
    1 1 2 2 1
    

    输出#1

    1 2 4 0 3

说明/提示

  • 对于 30%30\% 的数据,满足:N≤50N \le 50;
  • 对于 60%60\% 的数据,满足:N≤500N \le 500;
  • 对于 100%100\% 的数据,满足:N≤104N \le 10 ^ 4。

输入解题思路,AI测评打分。不知道怎么写?

首页