#include<stdio.h>
#include<iostream>
#include<string.h>
#include<string>
#include<ctype.h>
#include<math.h>
#include<set>
#include<map>
#include<vector>
#include<queue>
#include<bitset>
#include<algorithm>
#include<time.h>
using namespace std;
void fre(){freopen("c://test//input.in","r",stdin);freopen("c://test//output.out","w",stdout);}
#define MS(x,y) memset(x,y,sizeof(x))
#define MC(x,y) memcpy(x,y,sizeof(x))
#define MP(x,y) make_pair(x,y)
#define ls o<<1
#define rs o<<1|1
typedef long long LL;
typedef unsigned long long UL;
typedef unsigned int UI;
template <class T1,class T2>inline void gmax(T1 &a,T2 b){if(b>a)a=b;}
template <class T1,class T2>inline void gmin(T1 &a,T2 b){if(b<a)a=b;}
const int N=2000+10,M=0,Z=1e9+7,ms63=1061109567;
int n;
struct A
{
int v,o;
}a[N];
int st[N],ed[N];
int num[N];
bool cmp(A a,A b)
{
return a.v<b.v;
}
void print()
{
for(int i=1;i<=n;++i)printf("%d ",a[i].o);
puts("");
}
void solve()
{
sort(a+1,a+n+1,cmp);
int two1=0;
int two2=0;
int three=0;
for(int i=1;i<=2000;++i)
{
if(num[i]>=3&&three==0)three=i;
else if(num[i]==2&&two1==0)two1=i;
else if(num[i]==2&&two2==0)two2=i;
}
if(three==0&&two2==0)
{
puts("NO");
return;
}
puts("YES");
print();
if(three)
{
for(int i=1;i<=n;++i)if(a[i].v==three)
{
swap(a[i],a[i+1]);print();
swap(a[i+1],a[i+2]);print();
break;
}
}
else
{
for(int i=1;i<=n;++i)if(a[i].v==two1)
{
swap(a[i],a[i+1]);print();
break;
}
for(int i=1;i<=n;++i)if(a[i].v==two2)
{
swap(a[i],a[i+1]);print();
break;
}
}
}
int main()
{
while(~scanf("%d",&n))
{
MS(num,0);
for(int i=1;i<=n;++i)
{
scanf("%d",&a[i].v);
a[i].o=i;
++num[a[i].v];
}
solve();
}
return 0;
}
/*
【trick&&吐槽】
差点把成功编号的情况忘记掉输出YES,我好蠢!
【题意】
给你n(2000)个数,每个数的数值都在[1,2000]之间。
我们需要把这些数,按照数值从小到大排序。
然而,因为数值可能有重复,所以最终排序顺序所对应的原始编号可能是不同的。
让你判断是否至少有三种编号情况,没有输出NO
有则输出YES和三种数列。
【类型】
简单 构造
【分析】
这题可以说是比较简单的构造。
我们发现,如果没有重复的数值,显然答案是NO
如果有一个数值至少重复了3次,那这3者位置交换就可以构成6种排列,肯定YES
如果有两个数值至少重复了4次,那00 01 10 11四种排列就可以构成,答案也肯定YES
于是,只要考虑1*3和2*2,这道题就可以做完啦!
【时间复杂度&&优化】
O(nlogn)
*/
【Codeforces Round 269 (Div 2)B】【简单构造】MUH and Sticks 数值升序输出三种可能编号序
最新推荐文章于 2019-01-20 22:27:21 发布