Cod sursa(job #165320)

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

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

long long v[61001];

int litri ( 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,"%lld %lld %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;

  }


fclose(f);

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

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

else{

int S=k;

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

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

  else
  y=v[i]/m+1;
  s-=y;
  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;

   }


  S-=litri(p);
  k=S;

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

}

fclose(g);

return 0;
}