Cod sursa(job #1848404)

Utilizator mariusn01Marius Nicoli mariusn01 Data 15 ianuarie 2017 23:33:09
Problema Progresii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <iostream>
#define DIM 100010
using namespace std;
ifstream fin ("progresii.in");
ofstream fout("progresii.out");

long long N, M, K, L, x[DIM], t;
long long Min[DIM], S[DIM], sol[DIM];

long seconds(long long dist, long long pas) {
    return 1 + dist/pas;
}

int main () {
    ifstream fin ("progresii.in");
    ofstream fout("progresii.out");
    fin>>N>>M>>K>>L;
    for (int i=1;i<=N;i++) {
        fin>>x[i];
        Min[i] = seconds(L-x[i], M);
        S[i] = S[i-1] + Min[i];
        //cout<<Min[i]<<" ";
    }
    if (S[N] > K) {
        fout<<-1;
        return 0;
    }
    for (int i=1;i<=N;i++) {

        long long maxAcceptedSeconds = K - (S[N]-S[i]);

        //sol[i] = 1 + (L-x[i])/maxAcceptedSeconds;

        if (maxAcceptedSeconds >= L-x[i]+1)
            sol[i] = 1;
        else
            sol[i] = 1 + (L-x[i])/maxAcceptedSeconds;

        K-=seconds(L-x[i], sol[i]);
    }
    for (int i=1;i<=N;i++)
        fout<<sol[i]<<"\n";
    return 0;
}