Pagini recente » Cod sursa (job #212948) | Cod sursa (job #1145129) | Cod sursa (job #2844) | Cod sursa (job #2912933) | Cod sursa (job #2401640)
#include <fstream>
#include <algorithm>
#include <queue>
#define DIM 300005
using namespace std;
struct element{
int pos,ans,x;
};
element v[DIM];
bool cmp1(element a,element b) {
return a.x<b.x;
}
bool cmp2(element a,element b) {
return a.pos<b.pos;
}
priority_queue<int,vector<int>,greater<int>> q;
int main()
{ int n,dif,i,cnt=0;
ifstream f("partitie.in");
ofstream g("partitie.out");
f>>n>>dif;
for (i=1;i<=n;++i)
f>>v[i].x,v[i].pos=i;
sort(v+1,v+n+1,cmp1);
q.push(1);
v[i].ans=1;
for (i=1;i<=n;++i)
if (v[q.top()].x<=v[i].x-dif) v[i].ans=v[q.top()].ans,q.pop(),q.push(i);
else ++cnt,v[i].ans=cnt,q.push(i);
sort(v+1,v+n+1,cmp2);
g<<cnt<<'\n';
for (i=1;i<=n;++i)
g<<v[i].ans<<'\n';
return 0;
}