Pagini recente » Cod sursa (job #2095880) | Cod sursa (job #144287) | Cod sursa (job #3180204) | Cod sursa (job #38923) | Cod sursa (job #2515986)
#include <fstream>
#include <algorithm>
#include <queue>
#include <unordered_map>
using namespace std;
ifstream in("partitie.in");
ofstream out("partitie.out");
const int lim=3e5+3;
unordered_map<int,int> m;
queue<int> q;
int v[lim];
int sol[lim];
int main()
{
int n,d;
in>>n>>d;
for(int i=1;i<=n;++i)
{
in>>v[i];
m[v[i]]=i;
}
sort(v+1,v+n+1);
int grupa=1;
q.push(v[1]);
sol[m[v[1]]]=grupa;
for(int i=2;i<=n;++i)
{
if(v[i]<q.front()+d)
{
q.push(v[i]);
++grupa;
sol[m[v[i]]]=grupa;
}
else
{
sol[m[v[i]]]=sol[m[q.front()]];
q.pop();
q.push(v[i]);
}
}
out<<grupa<<endl;
for(int i=1;i<=n;++i)
out<<sol[i]<<endl;
return 0;
}