Pagini recente » Cod sursa (job #2344413) | oji_2 | Cod sursa (job #684050) | Cod sursa (job #809588) | Cod sursa (job #1399052)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in ("partitie.in");
ofstream out ("partitie.out");
const int MAXN = 300000 + 10;
struct node
{
int val;
int poz;
};
node V[MAXN];
int Where[MAXN];
struct comp
{
inline bool operator () (const node &A, const node &B) const
{
return A.val < B.val;
}
};
int main()
{
int N, D, i, j;
in >> N >> D;
for (i = 1; i <= N; i ++){
in >> V[i].val;
V[i].poz = i;
}
sort (V + 1, V + N + 1, comp ());
int Max = 0;
j = 1;
for (i = 1; i <= N; i ++){
while (V[j].val <= V[i].val + (D - 1) && j <= N)
j ++;
if (j - i > Max)
Max = j - i;
}
int k = 1;
for (i = 1; i <= N; i ++){
Where[V[i].poz] = k;
k ++;
if (k == Max + 1)
k = 1;
}
out << Max << "\n";
for (i = 1; i <= N; i ++)
out << Where[i] << "\n";
return 0;
}