Cod sursa(job #127918)

Utilizator razvi9Jurca Razvan razvi9 Data 25 ianuarie 2008 14:37:44
Problema Partitie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<stdio.h>
int n,k,a[300010],b[300010],m,i,j,nr,x;

int poz(int i,int j)
{int x=0,y=-1,aux;
 while(i<j){
 if(a[b[i]]>a[b[j]]) {aux=b[i];b[i]=b[j];b[j]=aux;aux=x;x=-y;y=-aux;}
 i=i+x;j=j+y;}
 return i;}

void sort(int i,int j)
{if(i>=j) return;
 int k=poz(i,j);
 sort(i,k-1);
 sort(k+1,j);}

int main()
{freopen("partitie.in","r",stdin);
 freopen("partitie.out","w",stdout);
 scanf("%d %d",&n,&k);
 for(i=1;i<=n;i++) {scanf("%d",&a[i]);b[i]=i;}
 sort(1,n);
 nr=1;j=1;
/* for(i=2;i<=n;i++)
  if(a[b[i]]-a[b[j]]<k) nr++;
  else{if(nr>m)m=nr;j++;}*/
 for(i=1;i<=n;i++) a[b[i]]=(i-1)%m+1;
 printf("%d\n",m);
 for(i=1;i<=n;i++) printf("%d\n",a[i]);
 fclose(stdout);
 return 0;}