Cod sursa(job #195517)

Utilizator katakunaCazacu Alexandru katakuna Data 19 iunie 2008 13:06:45
Problema Partitie Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 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;){
  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;

  j++;
  i=j;

  }


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