Pagini recente » Cod sursa (job #2829476) | Cod sursa (job #1054085) | Cod sursa (job #2912812) | Cod sursa (job #107973) | Cod sursa (job #125733)
Cod sursa(job #125733)
#include <cstdio>
#include <algorithm>
using namespace std;
int N, D, A[1<<19];
int main()
{
freopen("partitie.in", "r", stdin);
freopen("partitie.out", "w", stdout);
scanf("%d %d", &N, &D );
for( int i = 1; i <= N; i++ )
scanf("%d", A + i );
sort( A + 1, A + N + 1 );
int ls = -1, mv = 0, cur = 1;
for( int i = 2; i <= N; i++ )
if( A[i] - A[1] < D )
cur++,
ls = i;
mv = max( mv, cur );
for( int i = 2; i <= N; i++ )
{
cur--;
ls++;
while( ls < N && A[ls] < A[i] + D )
ls++, cur++;
mv = max( cur, mv );
}
printf("%d\n", mv );
ls = 1;
for( int i = 1; i <= N; i++ )
{
printf("%d\n", ls++ );
if( ls > mv )
ls = 1;
}
return 0;
}