Pagini recente »
Istoria paginii runda/nufifloricel4
|
Istoria paginii runda/sequences2/clasament
|
Cod sursă (job #513209)
|
Istoria paginii runda/sequences2/clasament
|
Cod sursă (job #108753)
Cod sursă (job
#108753)
#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;
}