Cod sursa(job #521001)

Utilizator PlayLikeNeverB4George Marcus PlayLikeNeverB4 Data 10 ianuarie 2011 22:42:15
Problema Farfurii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <stdio.h>

const long long maxn=100010;
long long i,j,k,p,N,K,F[maxn],F2[maxn];
bool ok=false,comp=false;

int main()
{
	freopen("farfurii.in","r",stdin);
	freopen("farfurii.out","w",stdout);
	scanf("%lld %lld",&N,&K);
	i=1; 
	if(K==0) K=-100;
	do
	{
		
		p=(N-i)*(N-i-1)/2;
		if(p>K) F[i]=i,i++;
		else if(p<K)
		{
			F[N+K-(N-i+1)*(N-i)/2]=i;
			K=p;
			comp=true;
		}
		else
		{
			p=i;
			if(!comp) p--;
			for(j=N,ok=true;j>=1;j--)
			{
				while(F[j]>0 && j>=1) j--;
				F[j]=++p;
			}
		}
	}
	while(!ok && i<=N);
	
	for(i=1;i<=N;i++)
		F2[F[i]]=i;
	for(i=1;i<=N;i++)
		printf("%lld ",F2[i]);
}