Pagini recente » Cod sursa (job #3291976) | Cod sursa (job #3232534) | Cod sursa (job #796377) | Cod sursa (job #2312381) | Cod sursa (job #2923690)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("partitie.in");
ofstream fout("partitie.out");
const int NMax=300005;
pair<int,int> v[NMax];
int sol[NMax];
int main()
{
int n,d,i,j,x,cnt=0;
fin>>n>>d;
for(i=1;i<=n;i++)
{
fin>>x;
v[i]={x,i};
}
sort(v+1,v+n+1);
j=2;
for(i=1;i<=n;i++)
{
if(sol[v[i].second]==0)
{
cnt++;
sol[v[i].second]=cnt;
}
while(j<n and v[j].first<v[i].first+d)
{
j++;
}
sol[v[j].second]=sol[v[i].second];
j++;
}
fout<<cnt<<'\n';
for(i=1;i<=n;i++)
{
fout<<sol[i]<<'\n';
}
return 0;
}