Cod sursa(job #1948984)

Utilizator hrazvanHarsan Razvan hrazvan Data 1 aprilie 2017 17:14:00
Problema Progresii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <cstdio>
#define MAXN 100000
int v[MAXN];

inline long long min2(long long a, long long b){
  return a < b ? a : b;
}

inline long long max2(long long a, long long b){
  return a > b ? a : b;
}

int main(){
  FILE *in = fopen("progresii.in", "r");
  int n, m, i;
  long long k, l, t, x;
  fscanf(in, "%d%d%lld%lld", &n, &m, &k, &l);
  for(i = 0; i < n; i++)
    fscanf(in, "%d", &v[i]);
  fclose(in);
  t = 0;
  for(i = 0; i < n; i++)
    t += 1 + (l - v[i]) / m;
  FILE *out = fopen("progresii.out", "w");
  for(i = 0; i < n; i++){
    t -= 1 + (l - v[i]) / m;
    if(k - t == 1)
      x = l - v[i] + 1;
    else
      x = min2(m, max2(1, (l - v[i] + k - t - 2) / (k - t - 1)));
    fprintf(out, "%d\n", x);
    k -= 1 + (l - v[i]) / x;
  }
  fclose(out);
  return 0;
}