Cod sursă (job #258681)

Utilizator avatar Coroian_David Coroian David Coroian_David IP ascuns
Problemă Lalele (clasele 9-10) Compilator cpp | 1,07 kb
Rundă Arhiva de probleme Status evaluat
Dată 3 dec. 2016 10:17:16 Scor 40
#include <cstdio>

#include <algorithm>

using namespace std;

FILE *f, *g;

int n, days, l;

int flori;

struct lalea
{
    int h, d;
};

lalea lalele[5000001];

bool cmp(lalea a, lalea b)
{
    int x = a.h + days - a.d;
    int y = b.h + days - b.d;

    return (x <= y ? true : false);
}

void plant()
{
    lalele[++ flori].d = days;

    lalele[flori].h = l;
}

void targ()
{
    int mid;

    sort(lalele + 1, lalele + flori + 1, cmp);

    mid = flori / 2 + 1;

    fprintf(g, "%d\n", lalele[mid].h + days - lalele[mid].d);

    flori /= 2;
}

void solve()
{
    f = fopen("lalele.in", "r");

    int i, d, mid;

    fscanf(f, "%d", &n);

    g = fopen("lalele.out", "w");

    while(n != 0)
    {
        fscanf(f, "%d%d", &d, &l);

        n -= d;

        for(i = 1; i <= d; i ++)
        {
            days ++;

            if(l != 0)
                plant();


            else
                targ();
        }
    }

    fclose(f);
    fclose(g);
}

int main()
{
    solve();

    return 0;
}