Pagini recente » Cod sursa (job #2653225) | Cod sursa (job #2768616) | Cod sursa (job #2959282) | Cod sursa (job #3260112)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("partitie.in");
ofstream cout("partitie.out");
int n,d,i;
pair<int,int>v[300050];
int ans[300050];
int nrgrup;
int j=0;
int main()
{
cin>>n>>d;
for(i=1; i<=n; i++)
{
int elem;
cin>>elem;
v[i].first = elem;
v[i].second = i;
}
sort(v+1,v+1+n);
for(i=1; i<=n; i++)
{
if(ans[v[i].second] == 0)
{
nrgrup++;
ans[v[i].second] = nrgrup;
}
while(!(ans[v[j].second] == 0 && v[j].first - d >= v[i].first)&&j<=n)
j++;
if(j<=n)
ans[v[j].second] = ans[v[i].second];
}
cout<<nrgrup<<'\n';
for(i=1;i<=n;i++)
cout<<ans[i]<<'\n';
return 0;
}