Cod sursa(job #1994533)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 25 iunie 2017 10:54:20
Problema Progresii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>
#define MAXN 100001

long long t[MAXN + 1];
long long p[MAXN + 1];

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