Pagini recente » Cod sursa (job #1303559) | Cod sursa (job #1108416) | Cod sursa (job #1038567) | Cod sursa (job #2109104) | Cod sursa (job #2662189)
#include<fstream>
#include<algorithm>
using namespace std;
const int NMAX = 300001;
int M[NMAX], P[NMAX];
ifstream f("partitie.in");
ofstream g("partitie.out");
int main()
{
int N, D, i;
f >> N >> D;
for(i = 1; i <= N; ++i)
{
f >> M[i];
P[i] = i;
}
sort(P + 1, P + N + 1, [&](int x, int y)
{
return M[x] < M[y];
});
int j = 1, nrSub = 0;
for(i = 1; i <= N; i++)
{
while(j <= N && M[P[i]] - M[P[j]] >= D)
j++;
nrSub = max(nrSub, i - j + 1);
}
for(i = 1; i <= N; i++)
M[P[i]] = i % nrSub + 1;
g << nrSub << '\n';
for(i = 1; i <= N; i++)
g << M[i] << '\n';
return 0;
}