Pagini recente » Borderou de evaluare (job #2081844) | Cod sursa (job #387903) | Borderou de evaluare (job #302362) | Borderou de evaluare (job #961305) | Cod sursa (job #2501232)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("partitie.in");
ofstream cout("partitie.out");
long long n,k,ok[800005],ans,j;
pair<int,int>v[800005];
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>v[i].first;
v[i].second=i;
}
sort(v+1,v+n+1);
for(int i=n;i>0;i--){
if(ok[v[i].second]==0){
ans++;
ok[v[i].second]=ans;
j=i-1;
while(j>0){
if(ok[v[j].second]==0){
if(v[i].first-v[j].first>=k){
ok[v[j].second]=ans;
v[i].first=v[j].first;
}
}
j--;
}
}
}
cout<<ans<<'\n';
for(int i=1;i<=n;i++){
cout<<ok[i]<<'\n';
}
return 0;
}