记录编号 35262 评测结果 AAAAAAAAAA
题目名称 编码问题 最终得分 100
用户昵称 GravatarMakazeu 是否通过 通过
代码语言 C++ 运行时间 0.072 s
提交时间 2012-02-19 15:46:36 内存使用 0.27 MiB
显示代码纯文本
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
using namespace std;
int N,M;
const int MAXN=111;

int Num[MAXN];
int Ans[MAXN];

void Work1()
{
	Ans[1]=0;
	for(int i=2;i<=N;i++)
	{
		int Res=0;
		for(int j=1;j<i;j++)
		{
			if(Num[j]<Num[i])
				Res++;
		}
		Ans[i]=Res;
	}
	for(int i=1;i<=N-1;i++)
		printf("%d ",Ans[i]);
	printf("%d\n",Ans[N]);
}

void Work2()
{
	bool flag[MAXN];
	
	for(int i=0;i<=100;i++)
		flag[i]=false;
	
	Ans[N]=Num[N];
	flag[Ans[N]]=true;
	
	for(int i=N-1;i>=1;i--)
	{
		int tmp1=Num[i];
		for(int j=0;j<=N-1;j++)
		{
			if(flag[j])
				continue;
			int tmp2=0;
			for(int k=i+1;k<=N;k++)
			{
				if(Ans[k]<j)
					tmp2++;
			}
			int tmp3=tmp1+tmp2;
			if(tmp3==j)
			{
				Ans[i]=j;
				flag[j]=true;
				break;
			}
		}
	}
	for(int i=1;i<=N-1;i++)
		printf("%d ",Ans[i]);
	printf("%d\n",Ans[N]);
}

void solve()
{
	scanf("%d %d\n",&M,&N);
	int P;
	for(int i=1;i<=M;i++)
	{
		scanf("%d\n",&P);
		for(int j=1;j<=N;j++)
			scanf("%d",&Num[j]);
		if(P==1)
			Work1();
		else if(P==2)
			Work2();
	}
}

int main()
{
	freopen("code.in","r",stdin);
	freopen("code.out","w",stdout);
	solve();
	return 0;
}