Cod sursa(job #214144)

Utilizator ProtomanAndrei Purice Protoman Data 12 octombrie 2008 22:45:26
Problema Partitie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <stdio.h>
#include <algorithm>
#define mx 300010

using namespace std;

pair <int, int> a[mx];
int n, d, nr_part;
int v[mx];

int main()
{
	freopen("partitie.in","r",stdin);
	freopen("partitie.out","w",stdout);
	scanf("%ld %ld", &n, &d);
	for (int i = 1, nr = 0; i <= n; i++)
	{
		scanf("%ld", &nr);
		a[i] = make_pair (nr, i);
	}
	sort(a + 1, a + 1 + n);
	for (int i = 1, j = 1; i <= n; i++)
		if (a[i].first - d >= a[j].first)
		{
			v[a[i].second] = v[a[j].second];
			j++;
		}
		else v[a[i].second] = (++nr_part);
	printf("%ld\n", nr_part);
	for (int i = 1; i <= n; i++)
		printf("%ld\n", v[i]);
	fclose(stdin);
	fclose(stdout);
	return 0;
}