Cod sursa(job #374984)

Utilizator loginLogin Iustin Anca login Data 18 decembrie 2009 23:17:34
Problema Partitie Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
# include <fstream>
# include <algorithm>
using namespace std;
int n, d, v[300003], poz[300003], p[300003], nrp;

bool mai_mic(int i, int j)
{
	if (v[i]<=v[j])return 1;
	return 0;
}

int min ()
{
	int i, q=1, min=p[1];
	for (i=2;i<=nrp;i++)
		if (p[i]<min)
			min=p[i],q=i;
	return q;
}

int main ()
{
	int i, q;
	ifstream fin ("partitie.in");
	ofstream fout ("partitie.out");
	fin>>n>>d;
	for (i=1;i<=n;i++)
		fin>>v[i], poz[i]=i;
	sort(poz+1, poz+n+1, mai_mic);
	p[++nrp]=v[poz[1]];
	v[poz[1]]=nrp;
	for (i=2;i<=n;i++)
	{
		q=min();
		if (v[poz[i]]-p[q]>=d)
		{
			p[q]=v[poz[i]];
			v[poz[i]]=q;
		}
		else
		{
			p[++nrp]=v[poz[i]];
			v[poz[i]]=nrp;
		}
	}
	fout<<nrp<<endl;
	for (i=1;i<=n;i++)
		fout<<v[i]<<endl;
	return 0;
}