Pagini recente » Cod sursa (job #1034696) | Cod sursa (job #3144024) | Cod sursa (job #2922189) | Cod sursa (job #1441749) | Cod sursa (job #1750374)
#include <bits/stdc++.h>
using namespace std;
int main() {
ifstream cin("partitie.in");
ofstream cout("partitie.out");
int n, d;
cin>>n>>d;
set < pair <int, int >> s;
vector < pair < int, int >> v(n);
for(int i=0;i<n;++i)cin>>v[i].first,v[i].second=i;
sort(v.begin(), v.end());
int sets = 0;
vector<int>who(n);
for(int i = n - 1; i >= 0; --i) {
int x = v[i].first, poz = v[i].second;
auto it = s.lower_bound({x + d,i});
if(it == end(s))
sets ++, who[poz] = sets;
else {
who[poz] = who[it->second], s.erase(it);
}
s.insert(make_pair(x,poz));
}
cout<<sets<<'\n';
for(auto i : who)
cout<<i<<'\n';
}