Pagini recente » Cod sursa (job #805081) | Cod sursa (job #2651462) | Cod sursa (job #2861993) | Cod sursa (job #673194) | Cod sursa (job #2968710)
#include <fstream>
#include <algorithm>
#pragma GCC ooptimize("O1")
#pragma GCC ooptimize("O2")
#pragma GCC ooptimize("O3")
#pragma GCC ooptimize("unroll-loops")
using namespace std;
pair <int, int >v[300005];
int sol[300005];
int main()
{
ifstream cin("partitie.in");
ofstream cout("partitie.out");
int n,d,cnt=1,j;
cin>>n>>d;
for(int i=0; i<n; i++)
cin>>v[i].first, v[i].second=i;
sort(v,v+n);
for(int i=0; i<n; i++)
{j=0;
if(sol[v[i].second]==0)
sol[v[i].second]=cnt,cnt++;
while(j<=n && (v[j].first-d<v[i].first || sol[v[j].second]>0)) j++;
if(j<=n)
sol[v[j].second]=sol[v[i].second];
}
cout<<cnt-1<<'\n';
for(int i=0; i<n; i++)
cout<<sol[i]<<'\n';
return 0;
}