Cod sursă (job #310844)

Utilizator avatar Coroian_David Coroian David Coroian_David IP ascuns
Problemă SCV (clasele 9-10) Compilator cpp | 2,01 kb
Rundă Arhiva de probleme Status evaluat
Dată 19 aug. 2017 15:16:25 Scor 90
#include <cstdio>

using namespace std;

FILE *f, *g;

int rez;

int scvBuild, scvCost;
int scvCollect;

int target;

void readFile()
{
    f = fopen("scv.in", "r");

    fscanf(f, "%d%d%d%d", &scvCost, &scvBuild, &scvCollect, &target);

    fclose(f);
}

void solve()
{
    int cr = 0;
    int scv = 1;

    rez = 0;
    while(cr < target)
    {
        int need = target - cr;
        int get = scv * scvCollect;
        int ritmCurent = need / get + ((need % get) != 0);

        if(cr >= scvCost)
        {
            if(scvBuild > ritmCurent)
            {
                cr = target;

                rez += ritmCurent;
            }

            else
            {
                int rest = need + scvCost - get * scvBuild;
                get += scvCollect;
                int scvAdd = scvBuild + rest / get + ((rest % get) != 0);

                if(scvAdd < ritmCurent)
                {
                    rez += scvBuild;

                    cr -= scvCost;

                    cr += scv * scvCollect * scvBuild;

                    scv ++;
                }

                else
                {
                    cr = target;

                    rez += ritmCurent;

                    //rez ++, cr += scv * scvCollect;
                }
            }
        }

        else
        {
            int need = scvCost - cr;
            int get = scv * scvCollect;
            int ritmscv = need / get + ((need % get) != 0);

            if(ritmCurent >= ritmscv)
            {
                rez += ritmscv;

                cr += ritmscv * get;
            }

            else
            {
                rez += ritmCurent;

                cr = target;

                //rez ++, cr += scv * scvCollect;
            }
        }
    }
}

void printFile()
{
    g = fopen("scv.out", "w");

    fprintf(g, "%d\n", rez);

    fclose(g);
}

int main()
{
    readFile();

    solve();

    printFile();

    return 0;
}