Cod sursă (job #108753)

Utilizator avatar andreea_zaharia Zaharia Andreea andreea_zaharia IP ascuns
Problemă SCV (clasele 9-10) Compilator cpp | 1,10 kb
Rundă Arhiva de probleme Status evaluat
Dată 21 ian. 2015 21:40:27 Scor 100
#include <cstdio>

int main () {
    freopen ("scv.in", "r", stdin);
    freopen ("scv.out", "w", stdout);

    int C, T, M, X; //cost, timp construire, minerale pe zi, target
    scanf ("%d%d%d%d", &C, &T, &M, &X);

    int tNes =  (X % M == 0)? (X / M) : (X / M +1);
    int scvNes = X / C +1;
    int mCrt = M, tCrt = 1;
    int aux;

    for (int scvCrt = 1; scvCrt <= scvNes && mCrt < X; scvCrt++) {
        if (mCrt >= C) {
            tCrt += T;
            mCrt = mCrt + M * scvCrt * T - C;
        }
        else {
            aux = ((C - mCrt) % (M * scvCrt) == 0)? ((C - mCrt) / (M * scvCrt)) : ((C - mCrt) / (M * scvCrt) +1);
            tCrt += aux + T;

            aux = (aux + T) * M * scvCrt - C;
            mCrt += aux;
        }

        if (mCrt < X) {
            aux = ((X - mCrt) % (M * (scvCrt +1)) == 0)? ((X - mCrt) / (M * (scvCrt +1))) : ((X - mCrt) / (M * (scvCrt +1)) +1);
            aux +=tCrt;
        }
        else {
            aux = tCrt;
            scvNes = scvCrt;
        }

        if (aux <= tNes) {
            tNes = aux;
        }
    }

    printf ("%d\n", tNes);

    return 0;
}