Pagini recente » Cod sursa (job #1657991) | Cod sursa (job #2920642) | Cod sursa (job #21384) | Cod sursa (job #563064) | Cod sursa (job #2969318)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in ("partitie.in");
ofstream out ("partitie.out");
#define pii pair <int, int>
const int max_size = 3e5 + 12;
int ans[max_size];
pii v[max_size];
int main ()
{
int n, d, j = 1, ct = 0;
in >> n >> d;
for (int i = 1; i <= n; i++)
{
in >> v[i].first;
v[i].second = i;
}
sort(v + 1, v + n + 1);
for (int i = 1; i <= n; i++)
{
if (ans[v[i].second] == 0)
{
ct++;
ans[v[i].second] = ct;
}
while (j <= n && (ans[v[j].second] != 0 || v[j].first - v[i].first < d))
{
j++;
}
if (j <= n)
{
ans[v[j].second] = ans[v[i].second];
}
}
out << ct << '\n';
for (int i = 1; i <= n; i++)
{
out << ans[i] << '\n';
}
in.close();
out.close();
return 0;
}