记录编号 267582 评测结果 AAAAAAAAAA
题目名称 [HZOI 2016]阳光之春 最终得分 100
用户昵称 GravatarNewBee 是否通过 通过
代码语言 C++ 运行时间 0.654 s
提交时间 2016-06-11 16:08:41 内存使用 0.77 MiB
显示代码纯文本
#include<cstdio>
#include<algorithm>
#define Cu fclose(stdin);fclose(stdout);return 0;
#define Begin freopen("hzoi_spring.in","r",stdin);freopen("hzoi_spring.out","w",stdout);chul();Cu
using namespace std;
const int maxn=50010;
int cnt=0;
struct op{
	int num,path,sobm;
	op(){
		num=path=sobm=0;
	}
};
op r[maxn];
bool flag[maxn];
int a[maxn];int n;bool f=1;
bool comp1(op,op);
bool comp2(op,op);
void algo(int,int);
void chul();
int main(){
	Begin
}
void chul(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&r[i].num);
		r[i].path=i;
	}
	sort(r+1,r+1+n,comp1);
	for(int i=1;i<=n;i++){
		r[i].sobm=i;
	}
	sort(r+1,r+1+n,comp2);
	a[0]=r[1].sobm;
	r[0].sobm=r[1].sobm;
	algo(r[1].sobm,1);
}
void algo(int x,int k){
	if(k==n+1){
		if(cnt==10)exit(0);
		if(cnt==0&&r[n].sobm==a[n])return;
		cnt++;
		printf("total %d:",cnt);
		for(int i=1;i<=n;i++){
			printf(" %d",a[i]);
		}
		printf("\n\n");
		return;
	}
	if(r[k-1].sobm==a[k-1]&&f){
		for(int i=r[k].sobm;i<=n;i++){
			if(!flag[i]){
				if(i!=r[k].sobm){
					f=0;
				}
				a[k]=i;
				flag[i]=1;
				algo(i,k+1);
				flag[i]=0;
				a[k]=0;
					f=1;
			}
		}
		return;
	}
	else{
		int t=0;
		for(int i=1;i<=n;i++){
			if(!flag[i]){
				a[k]=i;
				flag[i]=1;
				algo(i,k+1);
				flag[i]=0;
			}		
		}
	}
	
	
}
bool comp1(op a,op b){
	return a.num<b.num;
}
bool comp2(op a,op b){
	return a.path<b.path;
}