Cod sursa(job #124872)

Utilizator MaGdUtZaVasile Maria-Magdalena MaGdUtZa Data 20 ianuarie 2008 09:36:51
Problema Partitie Scor 20
Compilator cpp Status done
Runda preONI 2008, Runda 3, Clasa a 9-a Marime 0.88 kb
#include<stdio.h>
#define dim 2001

typedef struct
{
	long long unsigned nr,poz,cf;
}bula;

bula a[dim];

long long unsigned n,m,i,j,k,kkt,s,mul;

int main()
{
	freopen("partitie.in","r",stdin);
	freopen("partitie.out","w",stdout);

	scanf("%llu%llu",&n,&s);

	for(i=1; i<=n; ++i)

		scanf("%llu",&a[i].nr);

	a[1].cf=a[1].nr;

	a[1].poz=1;

	m=1;

	mul=0;

	kkt=1;

	while(kkt<n)
	{
		++mul;

	for(i=2; i<=n; ++i)
	{
		k=0;

		if(a[i].poz==0)
		{

			for(j=1; j<=m; ++j)
			{
				if(a[i].nr>a[j].cf && a[i].nr-a[j].cf>=s)

					k++;

				if(a[i].nr<a[j].cf && a[j].cf-a[i].nr>=s)

					k++;
			}
			if(k==m)
			{
				++m;

				a[m].cf=a[i].nr;

				a[i].poz=mul;

				++kkt;
			}
		}
	}
	for(i=1; i<=m; ++i)

		a[i].cf=0;

	m=0;
	}
	printf("%llu\n",mul);

	for(i=1; i<=n; ++i)

		printf("%llu\n",a[i].poz);

	return 0;
}