Cod sursa(job #183621)

Utilizator albuaAlbu Alexandru albua Data 22 aprilie 2008 13:35:28
Problema Progresii Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>
#define MAX 100001

FILE *f,*g;
long n,m,i,j,sum[MAX], a[MAX],ratia;
long long k,l;

void precalculeaza(void)
{
  long i,j;
  for(i=1;i<n;i++)
	{
	  for(j=i+1;j<=n;j++)
		sum[i]=sum[i]+(l-a[j])/m+1;
	}
}

long calculeaza(long x, long ratia)
{
  long contor=0,i;
  for(i=a[x];i<=l;i+=ratia) contor++;
  return contor;
}

int main()
{
  f=fopen("progresii.in","r");
  g=fopen("progresii.out","w");
  fscanf(f,"%ld %ld %lld %lld\n",&n,&m,&k,&l);
  for(i=1;i<=n;i++) fscanf(f,"%ld\n",&a[i]);
  precalculeaza();
  for(i=1;i<=n;i++)
    {
	  ratia=1;
	  while(calculeaza(i,ratia)+sum[i]>k)
	    {
		  ratia++;
		}
	  k-=calculeaza(i,ratia);
	  fprintf(g,"%ld\n",ratia);
	}
  fclose(f);  fclose(g);
  return 0;
}