Pagini recente » Cod sursa (job #1301735) | Cod sursa (job #1000157) | Cod sursa (job #2363916) | Cod sursa (job #1378712) | Cod sursa (job #3216934)
#include <bits/stdc++.h>
#pragma optimize GCC ("Ofast")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
///#include <tryhardmode>
///#include <GODMODE::ON>
using namespace std;
ifstream fin ("partitie.in");
ofstream fout ("partitie.out");
#define cin fin
#define cout fout
const int NMAX=3e5+5;
int color[NMAX];
struct elem{
int val;
int ind;
}v[NMAX];
bool cmp(elem a,elem b)
{
if(a.val!=b.val)
return a.val<b.val;
return a.ind<b.ind;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n,i,j,d,kon=0;
cin>>n>>d;
for(i=1;i<=n;i++)
{
cin>>v[i].val;
v[i].ind=i;
}
sort(v+1,v+n+1,cmp);
int st=1,dr=1;
while(st<=n)
{
if(!color[v[st].ind])
color[v[st].ind]=++kon;
while(dr<=n && (!color[v[dr].ind] || v[dr].val-v[st].val<d))
dr++;
if(dr<=n)
color[v[dr].ind]=color[v[st].ind];
st++;
}
cout<<kon<<"\n";
for(i=1;i<=n;i++)
cout<<color[i]<<"\n";
cin.close();
cout.close();
return 0;
}