Pagini recente » Cod sursa (job #38656) | Cod sursa (job #21192) | Cod sursa (job #2523564) | Cod sursa (job #2610098) | Cod sursa (job #1750308)
#include <bits/stdc++.h>
using namespace std;
int main() {
ifstream cin("partitie.in");
ofstream cout("partitie.out");
int n, d;
cin>>n>>d;
map<int, int>ID;
vector <int> v(n);
vector<int> unde(n);
set<int>s;
for(int i=0;i<n;++i)
cin>>v[i],s.insert(v[i]),ID[v[i]]=i;
int sets = 0;
while(!s.empty()){
sets ++;
auto last = *begin(s);
s.erase(begin(s));
unde[ID[last]] = sets;
while(!s.empty()) {
auto it = s.lower_bound(last + d);
if(it == end(s)) break;
last = *it, unde[ID[*it]] = sets;
s.erase(it);
}
}
cout<<sets<<'\n';
for(int i=0;i<n;++i)
cout<<unde[i]<<'\n';
}