萌新球调,做法是暴力填入wa on 7/8
查看原帖
萌新球调,做法是暴力填入wa on 7/8
253738
听取MLE声一片楼主2022/8/13 22:16

Rt

#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<algorithm>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#include<set>
#include<bitset>
using namespace std;
inline int read(){
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
	return x*f;
}
const int N=510;
const int M=3e5+10;
int n,a[N],b[M],c[N],d[N],cnt;
void put(int x){
	cnt++;
	while(b[cnt]!=0)
		cnt++;
	b[cnt]=x;
}
int cmp(int x,int y){
	return d[x]<d[y];
}
int main()
{
	n=read();
	for(int i=1;i<=n;i++){
		a[i]=read();
		d[i]=a[i]-(i-1);
		b[a[i]]=i;
		c[i]=i;
	}
	sort(c+1,c+n+1,cmp);
	for(int i=1;i<=n;i++){
		int k=c[i];
		for(int j=1;j<k;j++)
			put(i);
		if(cnt>a[k]){
			puts("No");
			return 0;
		}
	}
	for(int i=1;i<=n;i++)
		for(int j=n-i;j>=1;j--)
			put(i);
	puts("Yes");
	for(int i=1;i<=n*n;i++)
		printf("%d ",b[i]);
	return 0;
}

2022/8/13 22:16
加载中...