您的位置:首页 > 编程语言 > Go语言

UVA 1623(p256)----Enter the Dragon

2016-02-26 13:45 721 查看
#include<iostream>
#include<cstdio>
#include<set>
#include<cstring>
using namespace std;
const int maxn=1e6+50;
int lake,n;
int a[maxn];
int ans[maxn];
int have[maxn];
set<int> s;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int flag=1;
s.clear();
memset(ans,0,sizeof(ans));
memset(have,0,sizeof(have));
scanf("%d%d",&lake,&n);
for(int i=0; i<n; i++)
{
int x;
scanf("%d",&x);
a[i]=x;
if(!x) s.insert(i);
else
{
set<int>::iterator it=s.lower_bound(have[x]);
if(it==s.end())
flag=0;
ans[*it]=x;
have[x]=i;
s.erase(*it);
}
}
if(!flag) printf("NO\n");
else
{
printf("YES\n");
for(int i=0; i<n-1; i++)
if(a[i]==0)
printf("%d ",ans[i]);
if(a[n-1]==0&&ans[n-1]>=0) printf("%d",ans[n-1]);
printf("\n");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: