Pagini recente » Cod sursa (job #505497) | Cod sursa (job #1315400) | Cod sursa (job #2774338) | Cod sursa (job #59067) | Cod sursa (job #2515711)
#include <fstream>
#include <algorithm>
#include <unordered_map>
#include <vector>
using namespace std;
ifstream in("partitie.in");
ofstream out("partitie.out");
unordered_map<int,int> m;
vector<int> v;
const int lim=1e5+3;
int sol[lim];
int main()
{
int n,d,a;
in>>n>>d;
for(int i=1;i<=n;++i)
{
in>>a;
v.push_back(a);
m[a]=i;
}
sort(v.begin(),v.end());
int grupa=0;
while(v.size())
{
++grupa;
int ind=0;
while(ind<v.size())
{
sol[m[v[ind]]]=grupa;
int last=v[ind];
v.erase(v.begin()+ind);
ind=lower_bound(v.begin()+ind,v.end(),last+d)-v.begin();
}
}
out<<grupa<<endl;
for(int i=1;i<=n;++i)
out<<sol[i]<<endl;
return 0;
}