Pagini recente » Cod sursa (job #2951451) | Cod sursa (job #2781435) | Cod sursa (job #1528786) | Cod sursa (job #2283014) | Cod sursa (job #2454095)
#include <bits/stdc++.h>
using namespace std;
ifstream f("partitie.in");
ofstream g("partitie.out");
int m,d;
struct nr {int elem,poz;}; nr v[300001];
int rasp[300001],sol[300001];
bool op1(nr a,nr b)
{
return a.elem<b.elem;
}
int main()
{
f>>m>>d;
for(int i=1;i<=m;i++)
{
f>>v[i].elem;
v[i].poz=i;
}
sort(v+1,v+m+1,op1);
int cntpoz=1;
int nrsub=0;
for(int i=1;i<=m;i++)
{
while(cntpoz<m&&(rasp[cntpoz]!=0 ||v[cntpoz].elem-v[i].elem<d))
{
cntpoz++;
}
if(rasp[i]==0){nrsub++;rasp[i]=nrsub;}
if(rasp[cntpoz]==0&&v[cntpoz].elem-v[i].elem>=d)
{
rasp[cntpoz]=rasp[i];
}
}
for(int i=1;i<=m;i++)
{
sol[v[i].poz]=rasp[i];
}
g<<nrsub<<'\n';
for(int i=1;i<=m;i++)
{
g<<sol[i]<<'\n';
}
}