Cod sursa(job #165331)

Utilizator katakunaCazacu Alexandru katakuna Data 25 martie 2008 20:43:43
Problema Progresii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<stdio.h>

long long q,j,s,k,l,x,y;
int p,u,m,i;

int n,mij;

long long v[100002];
int t[100002];

long int litri ( long int m ){

int y;

  if(v[i]%m==0)
  y=v[i]/m;

  else
  y=v[i]/m+1;


return y;
}

int main(){

FILE *f=fopen("progresii.in","r");

fscanf(f,"%d %d %lld %lld",&n,&m,&k,&l);

  for(i=1;i<=n;i++){
  fscanf(f,"%lld",&x);
  v[i]=l-x+1;

  if(v[i]%m==0)
  y=v[i]/m;

  else
  y=v[i]/m+1;

  s+=y;
  t[i]=y;

  }


fclose(f);

FILE *g=fopen("progresii.out","w");

if(s>k)
fprintf(g,"%d",-1);

else{



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

  s-=t[i];

  x=k-s;

   p=1;
   u=m;

   while(p<=u){
   mij=(p+u)/2;

     if( litri(mij)<=x )
     u=mij-1;

     else
     p=mij+1;

   }


  k-=litri(p);


  fprintf(g,"%d\n",p);
  }

}

fclose(g);

return 0;
}