Pagini recente » Cod sursa (job #2726908) | Cod sursa (job #2717442) | Cod sursa (job #2420242) | Cod sursa (job #2503323) | Cod sursa (job #2662195)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f ( "partitie.in" );
ofstream g ( "partitie.out" );
const int NMAX = 300001;
int M[NMAX], P[NMAX];
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 ( int i = 1; i <= N; i++ )
{
while ( j <= N && M[P[i]] - M[P[j]] >= D )
j++;
nrSub = max ( nrSub, i - j + 1 );
}
for ( int i = 1; i <= N; i++ )
M[P[i]] = i % nrSub + 1;
g << nrSub << '\n';
for ( int i = 1; i <= N; i++ )
g << M[i] << '\n';
return 0;
}