Pagini recente » Cod sursa (job #1543181) | Cod sursa (job #161671) | Cod sursa (job #1202044) | Cod sursa (job #2855664) | Cod sursa (job #2968707)
#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++)
{
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;
}