Cod sursa(job #2627024)

Utilizator giotoPopescu Ioan gioto Data 9 iunie 2020 12:59:27
Problema Progresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>
using namespace std;

const int DIM = 1e5 + 5;

int n, m;
int x[DIM];
long long k, l;

int main() {
    freopen("progresii.in", "r", stdin);
    freopen("progresii.out", "w", stdout);

    scanf("%d%d", &n, &m);
    scanf("%lld%lld", &k, &l);

    ++l;
    long long sum = 0;
    for (int i = 1; i <= n ; ++i) {
        scanf("%d", &x[i]);
        if (x[i] > l) continue ;
        sum = sum + (l - x[i]) / m + (((l - x[i]) % m) > 0);
    }

    if (sum > k) {
        printf("-1");
        return 0;
    }

    for (int i = 1; i <= n ; ++i) {
        if(x[i] > l) continue ;

        sum = sum - ((l - x[i]) / m + (((l - x[i]) % m) > 0));
        long long timp = k - sum;
        long long vit = max((l - x[i]) / timp + (((l - x[i]) % timp) > 0), 1LL);
        k -= ((l - x[i]) / vit + (((l - x[i]) % vit) > 0));

        printf("%lld\n", vit);
    }

    return 0;
}