Cod sursa(job #359877)

Utilizator taloibogdanTaloi Bogdan Cristian taloibogdan Data 28 octombrie 2009 17:13:15
Problema Partitie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
long n,d,i,x,b[300050],mac;
struct che{long x,y;}a[300050];
long cmp(che a,che b)
{if(a.x<b.x)return 1;
return 0;}
int main()
{
 freopen("partitie.in","r",stdin);
 freopen("partitie.out","w",stdout);
 scanf("%ld%ld",&n,&d);
 for(i=1;i<=n;++i)
    scanf("%ld",&a[i].x),a[i].y=i;
 sort(a+1,a+n+1,cmp);
 x=1;
 for(i=1;i<=n;++i)
    if(a[i].x-a[x].x>=d)
      {if(i-x>mac)
         mac=i-x;
       while(a[i].x-a[x].x>=d)
            ++x;
      }
 if(n-x+1>mac)
   mac=i-x+1;
 printf("%ld\n",mac);
 for(i=1;i<=n;++i)b[a[i].y]=(i-1)%mac+1;
 for(i=1;i<=n;++i)
    printf("%ld\n",b[i]);
 return 0;
}