Cod sursa(job #2656281)

Utilizator PatrickCplusplusPatrick Kristian Ondreovici PatrickCplusplus Data 7 octombrie 2020 13:10:59
Problema Progresii Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("progresii.in");
ofstream fout("progresii.out");

const int nmax = 100005;
long long n, m, k, l, v[nmax], cost;
int main(){
    fin >> n >> m >> k >> l;
    for (int i = 1; i <= n; ++i){
        fin >> v[i];
        cost = 1LL * cost + 1 + 1LL * (l - v[i]) / m;
    }
    if (cost > k){
        fout << -1 << "\n";
        return 0;
    }
    for (int i = 1; i <= n; ++i){
        long long st = 1, dr = m, ans = m;
        cost -= 1 + (l - v[i]) / m;
        while (st <= dr){
            long long mid = 1LL * (st + dr) / 2;
            if (1LL * cost + 1 + (l - v[i]) / mid <= k){
                ans = mid;
                dr = mid - 1;
            }
            else{
                st = mid + 1;
            }
        }
        fout << ans << "\n";
        cost = 1LL * cost + 1LL * 1 + (l - v[i]) / ans;
    }
    fin.close();
    fout.close();
    return 0;
}