Pagini recente » Cod sursa (job #62753) | Cod sursa (job #103063) | Cod sursa (job #2181906) | Cod sursa (job #1079446) | Cod sursa (job #1492657)
#include <fstream>
#include <algorithm>
#define DIM 300005
using namespace std;
ifstream fin("partitie.in");
ofstream fout("partitie.out");
int n, d;
struct data {
int x;
int y;
}v[DIM];
bool cmp(const data& a, const data &b){
return a.x < b.x;
}
int sol[DIM];
int H[DIM];
int main() {
fin >> n >> d;
for (int i = 1; i <= n; i++) {
fin >> v[i].x;
v[i].y = i;
}
int k = 0;
sort(v + 1, v + n + 1, cmp);
sol[v[1].y] = ++k;
H[1] = 1;
int front = 1, back = 1;
for (int i = 2; i <= n; i++) {
int x = v[H[front]].x;
int y = v[H[front]].y;
if (v[i].x - x >= d){
front++;
sol[v[i].y] = sol[y];
H[++back] = i;
}
else {
sol[v[i].y] = ++k;
H[++back] = i;
}
}
fout << k << "\n";
for (int i = 1; i <= n; i++)
fout << sol[i] << "\n";
return 0;
}
//Trust me, I'm the Doctor!
//Miriam e tare!