Cod sursa(job #520969)

Utilizator PlayLikeNeverB4George Marcus PlayLikeNeverB4 Data 10 ianuarie 2011 22:12:09
Problema Farfurii Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include <stdio.h>

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

int main()
{
	freopen("farfurii.in","r",stdin);
	freopen("farfurii.out","w",stdout);
	scanf("%d %d",&N,&K);
	i=1;
	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;
		}
		else 
			for(j=N,p=i,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("%d ",F2[i]);
}