Cod sursa(job #195518)

Utilizator katakunaCazacu Alexandru katakuna Data 19 iunie 2008 13:17:46
Problema Partitie Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<stdio.h>
#include<algorithm>
using namespace std;

struct ada {int a,p;}v[300011];

int n,d,i,j,sol[300011];

int cmp(ada a, ada b){
return a.a<b.a;
}


int main(){


FILE *f=fopen("partitie.in","r");
fscanf(f,"%d %d",&n,&d);

  for(i=1;i<=n;i++){
  fscanf(f,"%d",&v[i].a);
  v[i].p=i;
  }

sort(v+1,v+n+1,cmp);

fclose(f);

int maxx=0;


  for(i=1;i<n;i++){
  j=i;

    while(v[j].a-v[i].a < d){
    j++;
      if(j>n)
      break;
    }

    
   j--;
   if(maxx<j-i+1)
   maxx=j-i+1;


  }


FILE *g=fopen("partitie.out","w");
int p=1;

   for(i=1;i<=n;i++){
   sol[v[i].p]=p;
   p++;
     if(p>maxx)
     p=1;
   }

  fprintf(g,"%d\n",maxx);

  for(i=1;i<=n;i++){
  fprintf(g,"%d\n",sol[i]);
  }


fclose(g);

return 0;
}