贪心~

#include<bits/stdc++.h>
using namespace std;
const int maxn=;
int a[maxn];
int b[maxn];
int vis[maxn];
set<int>s;
set<int>::iterator it;
vector<int>va[maxn],vb[maxn];
vector<int>v1,v2;
int main()
{
int T;
scanf ("%d",&T);
while (T--) {
int n;
bool flag=true;
scanf ("%d",&n);
for (int i=;i<=n;i++) {
scanf("%d",&a[i]);
vis[a[i]]++;
if(vis[a[i]]>n/) flag=false;
s.insert(a[i]);
}
if(flag) {
for(int i=;i<=n;i++) {
it=s.begin();
if(*it==a[i]&&s.size()==) {
for(int j=i+;j<=n;j++)
if(a[j]!=a[i]) {
b[j]=a[i];
vis[a[i]]--;
}
for(int j=i;j<=n;j++)
if(a[j]==a[i]&&b[j]==) v1.push_back(j);
for(int j=i-;j>=;j--) {
if(vis[a[i]]==) break;
if(a[j]!=a[i]&&b[j]!=a[i]) {
v2.push_back(b[j]);
b[j]=a[i];
vis[a[i]]--;
}
}
s.erase((*it));
sort(v1.begin(),v1.end());
sort(v2.begin(),v2.end());
for(int i=;i<v1.size();i++) b[v1[i]]=v2[i];
v1.clear();v2.clear();
break;
}
else {
if(*it==a[i])
it++;
b[i]=(*it);
vis[*it]--;
if(vis[*it]==)
s.erase(*it);
}
}
for(int i=;i<=n;i++) va[a[i]].push_back(i),vb[a[i]].push_back(b[i]);
for(int i=;i<=n;i++) {
sort(va[a[i]].begin(),va[a[i]].end());
sort(vb[a[i]].begin(),vb[a[i]].end());
for(int j=;j<va[a[i]].size();j++)
b[va[a[i]][j]]=vb[a[i]][j];
va[a[i]].clear();
vb[a[i]].clear();
}
for(int i=;i<=n;i++) printf(i==n?"%d\n":"%d ",b[i]);
}
else printf("Impossible\n");
for(int i=;i<=n;i++) vis[i]=,b[i]=;
s.clear();
}
return ;
}

最新文章

  1. saltstack简单部署和实践
  2. 手把手教你搭建SpringMVC——最小化配置
  3. SQLite 增、删、改、查
  4. 12.Warning (15714): Some pins have incomplete I/O assignments. Refer to the I/O Assignment Warnings report for details
  5. POJ 2227 The Wedding Juicer (优先级队列+bfs+dfs)
  6. php开启curl扩展
  7. Jackson怎样转换这样的字符串? String jsonStr = &quot;{dataType:&#39;Custom&#39;,regexp:&#39;t\\d+&#39;,msg:&#39;输入不正确&#39;}&quot;;
  8. Linux递归删除文件命令
  9. java_eclipse_svn 与服务器同步时 ,忽略某类型文件和文件夹
  10. Python基础篇-day2
  11. PHP中json_encode与json_decode
  12. 实现GridControl行动态改变行字体和背景色
  13. log4j2配置ThresholdFilter,让info文件记录error日志
  14. JavaScript中本地对象、内置对象和宿主对象(转)
  15. CentOS 7 keepalived+LVS
  16. Unity 2017 Game Optimization 新版
  17. bzoj3514(主席树+lct)
  18. 19 个必须知道的 Visual Studio 快捷键
  19. 2017年蓝桥杯省赛A组c++第6题(字符串匹配算法填空)
  20. Python3 tkinter基础 Entry show textvariable 密码输入框

热门文章

  1. 字符串类型:char,varchar,text,enum,set
  2. red hat 报错:apt-get:找不到命令
  3. OGG在windows环境下字符集的配置
  4. 获取度量数据:创建服务账户获取访问token
  5. appium常用的类库、对应的方法和属性
  6. Abaqus-GUI开发-RSG
  7. 原生js按回车键实现登录
  8. 日期相关类data,simpledataformat类
  9. ASP.NET CORE 基础知识(一):概述【上】
  10. mysql中的数据类型长度