Pagini recente » Cod sursa (job #2862687) | Cod sursa (job #2773025) | Cod sursa (job #462564) | Cod sursa (job #2933883) | Cod sursa (job #374984)
Cod sursa(job #374984)
# 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;
}