Cod sursa(job #1604021)

Utilizator akaprosAna Kapros akapros Data 17 februarie 2016 21:42:33
Problema Progresii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>
#define maxN 100002
#define ll long long
using namespace std;
int n, m, p[maxN], sol;
ll k, l, s;
void read()
{
    int i;
    freopen("progresii.in", "r", stdin);
    scanf("%d %d %lld %lld", &n, &m, &k, &l);
    k -= n;
    for (i = 1; i <= n; ++ i)
    {
        scanf("%d", &p[i]);
        s = s + 1LL * ((l - p[i]) / m);
    }
}
void solve()
{
    int i;
    if (s > k)
    {
        sol = -1;
        return ;
    }
}

void write()
{
    int v, i;
    freopen("progresii.out", "w", stdout);
    if (sol == -1)
        printf("-1");
    else
    {
        for (i = 1; i <= n; ++ i)
        {
            s -= (1LL * (l - p[i]) / m);
            if (1LL * (l - p[i]) <= 1LL * k - s)
                v = 1;
            else
            v = (l - p[i]) / (k - s + 1) + 1;
            k -= (1LL * (l - p[i]) / v);
            printf("%d\n", v);
        }
    }
}
int main()
{
    read();
    solve();
    write();
    return 0;
}