Cod sursa(job #165328)

Utilizator test_btestb testb test_b Data 25 martie 2008 20:37:39
Problema Progresii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<stdio.h>

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

int v[100101];




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;
    pm = 1+v[i]/m;
    spm+=pm;
  }
  FILE *g = fopen("progresii.out","w");
  if (spm<=k) {
    //caut cea mai mica valoare t ai t<=m spm-(1+v[i]/t)<=k-(1+v[i]/m)
    for (i=1;i<=n;i++) {
      //caut t
      t=1;
      while (spm-(1+v[i]/(m))>k-(1+v[i]/t)) {
	t++;
	if (t==m+1)
	  break;
      }
//      t--;
      //x[i]=t;
      fprintf(g,"%lld\n",t);
      spm-=(1+v[i]/m);
      k-=(1+v[i]/t);
    }
  } else
    fprintf(g,"-1");
  fclose(g);
  fclose(f);
  return 0;
}