Cod sursă (job #563549)

Utilizator avatar VladTZY Tiganila Vlad VladTZY IP ascuns
Problemă Lalele (clasele 9-10) Compilator cpp | 1,25 kb
Rundă Arhiva de probleme Status evaluat
Dată 29 aug. 2020 17:14:31 Scor 0
#include <fstream>
#include <algorithm>

#define NMAX 5000005

using namespace std;

ifstream f("lalele.in");
ofstream g("lalele.out");

int total_days, days, h, day, n, first;

struct Lalele{
    int day;
    int height;
};
Lalele v[NMAX];

bool cmp(Lalele a, Lalele b)
{
    int val_a = a.height + day - a.day;
    int val_b = b.height + day - b.day;

    if(val_a > val_b)
        return 0;
    return 1;
}

int main()
{
    f >> total_days;

    while(total_days)
    {
        f >> days >> h;

        if(h > 0)
        {
            first = 1;
            while(days)
            {
                day++;
                v[++n].day = day;
                v[n].height = h;

                days--;
                total_days--;
            }
        }
        else
        {
            while(days)
            {
                day++;

                if(first)
                {
                    sort(v + 1, v + 1 + n, cmp);
                    first = 0;
                }
                g << v[n / 2 - n % 2 + 1].height + day - v[n / 2 - n % 2 + 1].day << "\n";
                n = n / 2;

                days--;
                total_days--;
            }
        }
    }

    return 0;
}