Cod sursa(job #165341)

Utilizator katakunaCazacu Alexandru katakuna Data 25 martie 2008 21:01:07
Problema Progresii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<stdio.h>

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

int n,mij;

long long v[100002];
long long 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;


  //z - numarul max
  z=v[i];

  if(x>z)
  x=z;

  if(v[i]%x==0)
  p=v[i]/x;

  else
  p=v[i]/x+1;


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

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

     else
     p=mij+1;

   }
   */

  k-=x;


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

}

fclose(g);

return 0;
}