Cod sursa(job #1994528)

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

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

int main() {
    std::ifstream cin("progresii.in");
    std::ofstream cout("progresii.out");
    int i, n;
    double m, l, k;
    std::ios::sync_with_stdio(false);
    cin >> n >> m >> k >> l;
    for(i = 1; i <= n; i++) {
        cin >> p[i];
        p[i]--;
    }
    for(i = n; i >= 1; i--)
        t[i] = t[i + 1] + (l - p[i]) / m;
    long long p2 = 1;
    while(p2 <= (int) m)
        p2 <<= 1;
    p2 >>= 1;
    for(i = 1; i <= n; i++) {
        int rez = 0;
        for(int pas = p2; pas; pas >>= 1)
          if(t[i + 1] + (double)((l - p[i]) / (rez + pas)) > k)
           rez += pas;
        rez++;
        k -= (double)((l - p[i]) / rez);
        cout << rez << std::endl;
    }
    cin.close();
    cout.close();
    return 0;
}