Cod sursă (job #802548)

Utilizator avatar wrunning wild running wrunning IP ascuns
Problemă SCV (clasele 9-10) Compilator cpp-32 | 1,44 kb
Rundă Arhiva de probleme Status evaluat
Dată 6 ian. 2025 18:53:52 Scor 90
/*
Planeta Korhal abundă în minerale valoroase. Tu ai fost trimis pe această planetă ca să extragi X kilograme de minerale. Inițial dispui de un SCV (Space Construction Vehicle). SCV-ul colectează câte M kg de minerale pe zi. Dacă dorești, poți construi un nou SCV, ceea ce costă C kg de minerale și durează T zile întregi. Noul SCV construit începe și el să colecteze câte M kg de minerale
pe zi. Poți construi astfel oricâți SCV, dar nu poți construi doi SCV simultan.

De câte zile întregi ai nevoie pentru a aduna cel puțin X kg de minerale?
*/

#include <bits/stdc++.h>

using namespace std;
ifstream in("scv.in");
ofstream out("scv.out");

int main()
{
    int c,t,m,x,qty,nrscv=1,day=1,stock=0,start=-1000;//qty - quantity per day

    bool training=false;
    in>>c>>t>>m>>x;
    while (stock<x)
    {
        if (training && day-start==t)
        {
            training=false;
            nrscv++;
        }

        int needed=x-stock;
        qty=nrscv*m;
        int without=needed/qty;
        if (needed%qty>0)
            without++;
        int with=t+(needed+c-t*qty)/(qty+m);
        if ((needed-t*qty)%(qty+m)>0)
            with++;
        bool train_scv=with<without;

        if (train_scv && stock>=c && !training)
        {
            training=true;
            stock-=c;
            start=day;
        }
        day++;
        stock+=qty;

    }
    out<<day-1;
    return 0;
}