Cod sursa(job #1744138)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 19 august 2016 13:06:54
Problema Partitie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>
#include <algorithm>
#define MAXN 300000
struct Data{
   int val;
   int poz;
};
Data V[MAXN+1];
int ans[MAXN+1];
bool cmp(Data a,Data b){
   return a.val<b.val;
}
int main(){
   FILE*fi,*fout;
   int i,begin,end,max,n,d,con;
   fi=fopen("partitie.in" ,"r");
   fout=fopen("partitie.out" ,"w");
   fscanf(fi,"%d %d " ,&n,&d);
   for(i=1;i<=n;i++){
      fscanf(fi,"%d " ,&V[i].val);
      V[i].poz=i;
   }
   std::sort(V+1,V+n+1,cmp);
   begin=1;
   end=1;
   max=0;
   while(begin<=n){
      while(end<=n&&V[end].val-V[begin].val<=d-1)
        end++;
      if(max<end-begin)
         max=end-begin;
      begin++;
   }
   fprintf(fout,"%d\n" ,max);
   con=1;
   for(i=1;i<=n;i++){
      ans[V[i].poz]=con;
      con++;
      if(con==max+1)
        con=1;
   }
   for(i=1;i<=n;i++)
      fprintf(fout,"%d\n" ,ans[i]);
   fclose(fi);
   fclose(fout);
   return 0;
}