记录编号 267683 评测结果 AAAAAAAAAA
题目名称 [HZOI 2016]阳光之春 最终得分 100
用户昵称 Gravatar洛克索耶夫 是否通过 通过
代码语言 C++ 运行时间 0.325 s
提交时间 2016-06-11 16:45:38 内存使用 0.89 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

int Read()
{
	int a = 0, minus = 1;
	char ch = getchar();
	if(ch == '-')       minus = -1;
	while(ch < '0' || ch > '9'){
		ch = getchar();
		if(ch == '-')	minus = -1;
	}
	while(ch >= '0' && ch <= '9'){
		a = a * 10 + ch - '0';
		ch = getchar();
	}
	return a * minus;
}

struct NUM{
	int num, id;
	NUM()
	{
		num = id = 0;
	}
}a[50010];
int b[50010];
int n, cnt = 0;

inline int cmp(const NUM& a, const NUM& b)
{
	return a.num < b.num;
}

//void Update(int b[], int i)//??
//{
//	int tmp[50010];
//	for(int j = i; j <= n; j++)	tmp[j] = b[j];
//	sort(tmp + i, tmp + 1 + n);
//	for(int j = i; j <= n; j++)	b[j] = tmp[j];
//}

//void Work(int b[])
//{
//	if(cnt == 10)	return;
//	cnt++;
//	int tmp = 0;
//	for(int i = n - 1; i >= 1; i--){//变动的长度的起点 
//		for(int j = n; j > i; j--){
//			if(b[i] < b[j]){
//				//b[i] = b[i]^b[j]; b[j] = b[i]^b[j]; b[i] = b[i]^b[j];
//				tmp = b[i]; b[i] = b[j]; b[j] = tmp; tmp = 0;
//				Update(b, i + 1);
////				for(int k = n; k > j; k--){
////					if(b[k] < b[j])	
////						//b[k] = b[k]^b[j]; b[j] = b[k]^b[j]; b[k] = b[k]^b[j];
////						tmp = b[k]; b[k] = b[j]; b[j] = tmp; tmp = 0;
////				}	
//				printf("total %d:", cnt);
//				for(int i = 1; i <= n; i++)	printf(" %d",b[i]);
//				puts("");puts("");
//				if(cnt == 10)	return;
//				Work(b);	
//			}
//		}	
//	}
//}

int main()
{
	freopen("hzoi_spring.in", "r", stdin);
	freopen("hzoi_spring.out", "w", stdout);
	n = Read();
	for(int i = 1; i <= n; i++){
		a[i].num = Read();
		a[i].id = i;
	}	
	sort(a+1, a+1+n, cmp);
	for(int i = 1; i <= n; i++)	b[a[i].id] = i;
//	for(int i = 1; i <= n; i++)	printf("%d ", b[i]);
//	puts("");	
	//Work(b);
	
	for(int i = 1; i <= 10; i++){
		if(!next_permutation(b + 1 , b + 1 + n))	break;//自带库函数,用的时候类似sort 
		printf("total %d:", i);
		for(int j = 1; j <= n; j++)	printf(" %d",b[j]);
		if(i < 10)puts(""),puts("");
		else puts("");
	}
	
	fclose(stdin);
	fclose(stdout);
	return 0;
}
/*
5	
120 205 529 206 671
*/