Cod sursă (job #113918)

Utilizator avatar dragosv Dragos Vecerdea dragosv IP ascuns
Problemă SCV (clasele 9-10) Compilator c | 1,21 kb
Rundă Arhiva de probleme Status evaluat
Dată 4 feb. 2015 13:07:53 Scor 90
#include<stdio.h>
long long scv, dur, mpscv, goal, mpd, minerals, goal, t, terminat, aftershave, b4, jump;
int decide(int a, int b)
{
    if(a % b == 0)
    {
        return a / b;
    }
    else
    {
        return a / b + 1;
    }
}
int main ()
{
    FILE *in,*out;
    in = fopen("scv.in", "r");
    out = fopen("scv.out", "w");
    fscanf(in, "%d%d%d%d", &scv, &dur, &mpscv, &goal);
    mpd = mpscv;
    minerals = 0;
    t = 0;
    terminat = 0;
    if(scv >= goal)
    {
        terminat = 1;
        fprintf(out, "%d\n", decide(goal, mpscv));
    }
    while(terminat == 0)
    {
        while(minerals < scv)
        {
            minerals = minerals + mpd;
            t = t + 1;
        }
        b4 = decide((goal - minerals), mpd);
        aftershave = dur + decide((goal - (minerals - scv) - (dur * mpd)),(mpd + mpscv));
        if(aftershave < b4)
        {
            minerals = minerals - scv;
            minerals = minerals + (mpd * dur);
            mpd = mpd + mpscv;
            t = t + dur;
        }
        else
        {
            terminat = 1;
            fprintf(out, "%lld\n", t + b4);
        }
    }

    fclose(in);
    fclose(out);

    return 0;
}