Pagini recente » Cod sursa (job #1776857) | Cod sursa (job #2842331) | Cod sursa (job #2008536) | Cod sursa (job #774089) | Cod sursa (job #1994313)
#include <cstdio>
#include <algorithm>
using namespace std;
FILE *fin = fopen ("progresii.in", "r"), *fout = fopen ("progresii.out", "w");
const int nmax = 1e5;
long long p[nmax + 1];
int main() {
int n, m; long long k, l;
fscanf(fin, "%d%d%lld%lld", &n, &m, &k, &l);
long long cmin = 0;
for (int i = 1; i <= n; ++ i) {
fscanf (fin, "%lld", &p[ i ]);
p[ i ] = l - p[ i ];
if (p[ i ] >= 0) {
cmin += p[ i ] / m + 1;
}
}
int n2;
for (n2 = 1; n2 <= m / 2; n2 <<= 1) {
}
if (cmin > k) {
fprintf(fout, "-1\n");
} else {
for (int i = 1; i <= n; ++ i) {
if (p[ i ] < 0) {
fprintf(fout, "%d\n", 1);
continue;
}
cmin -= p[ i ] / m + 1;
int ans = p[ i ] / (k - cmin) + 1;
ans = min(ans, m); ans = max(ans, 1);
fprintf(fout, "%d\n", ans);
k -= p[ i ] / ans + 1;
}
}
fclose( fin );
fclose( fout );
return 0;
}