Cod sursa(job #125733)

Utilizator ZeusCatalin Tiseanu Zeus Data 20 ianuarie 2008 17:10:57
Problema Partitie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb

#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;
}