Cod sursă (job #107369)

Utilizator avatar nita_teddy Teddy Nita nita_teddy IP ascuns
Problemă SCV (clasele 9-10) Compilator c | 1,77 kb
Rundă Tema 12 clasele 9-10 2014/15 Status evaluat
Dată 18 ian. 2015 17:02:03 Scor 63
#include<stdio.h>

FILE *in, *out;

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;
    }
}

void init()
{
    fscanf(in, "%d%d%d%d", &scv, &dur, &mpscv, &goal);
}

int main () {

    in = fopen("scv.in", "r");
    out = fopen("scv.out", "w");

    init();

    mpd = mpscv;
    minerals = 0;
    t = 0;
    terminat = 0;

    if(scv >= goal) {
            terminat = 1;
            fprintf(out, "%d\n", decide(goal, mpscv));
    }
    while(terminat == 0) {

        //printf("seara     : minerals = %3lld || t = %3lld || mpd = %3lld\n", minerals, t, mpd);

        while(minerals < scv) {
                minerals = minerals + mpd;
                t = t + 1;
                //printf("seara     : minerals = %3lld || t = %3lld || mpd = %3lld\n", minerals, t, mpd);


        }

        b4 = decide((goal - minerals), mpd);
        aftershave = dur + decide((goal - (minerals - scv) - (dur * mpd)),(mpd + mpscv));

        //printf("seara     : b4 = %3lld || after = %3lld\n\n", b4, aftershave);

        if(aftershave < b4) {
                //nrscv = nrscv + 1;
                minerals = minerals - scv;
                //printf("scvBought : minerals = %3lld || t = %3lld || mpd = %3lld\n", minerals, t, mpd);
                minerals = minerals + (mpd * dur);
                mpd = mpd + mpscv;

                t = t + dur;
        } else {
            terminat = 1;
            fprintf(out, "%lld\n", t + b4);
        }
        //printf("scvReady  : minerals = %3lld || t = %3lld || mpd = %3lld\n", minerals, t, mpd);

    }

    fclose(in);
    fclose(out);

    return 0;
}