Cod sursa(job #115555)

Utilizator savimSerban Andrei Stan savim Data 16 decembrie 2007 12:57:40
Problema Dusman Scor 0
Compilator cpp Status done
Runda preONI 2008, Runda 2, Clasele 5-8 Marime 0.9 kb
#include <stdio.h>
int main()
{
	int aa,bb,gas,p,q,i,j,k,n,m,nr;
	int a[1001];
	int b[10001][2];
       
    freopen("dusman.in","r",stdin);
	freopen("dusman.out","w",stdout);

	scanf("%d%d%d",&n,&k,&m);
	for (i=1; i<=n; i++)
		scanf("%d%d",&b[i][0],&b[i][1]);

	for (i=1; i<=n; i++)
		a[i]=i;
	nr=0;a[0]=-1;i=n;j=n+1;
	while (nr<k)
	{
		if (i==j-1 && i!=1)
		{
			i--;
			j=n;
		}
		else j--;
		for  (aa=j; aa>=i-1; aa--)
			for (bb=aa-1; bb>=i; bb--)
			if (aa>i+1)
		{
			if (nr==k) break;
			gas=0;
			for (p=1; p<=m; p++)
			{
				for (q=1; q<=n; q++)
					if (a[q]==b[p][0])
					   if (a[q-1]==b[p][1] || a[q+1]==b[p][1])
					   {
						  gas=1;
						  break;
					   }
				if (gas) break;
			}

			if (!gas)
				nr++;
			if (nr==k)
			{
			   for (p=1; p<=n; p++)
				   printf("%d ",a[p]);
			}
			p=a[aa];
			a[aa]=a[bb];
			a[bb]=p;
		}
	}
	return 0;
}