Cod sursă (job #118072)

Utilizator avatar Epictet Stamatin Cristian Epictet IP ascuns
Problemă Lalele (clasele 9-10) Compilator cpp | 1,37 kb
Rundă Arhiva de probleme Status evaluat
Dată 16 feb. 2015 12:30:28 Scor 90
#include <fstream>
#include <algorithm>
#define Dmax 9182
using namespace std;
ifstream fin ("lalele.in");
ofstream fout ("lalele.out");
typedef struct { int st, dr, val; } art;
int N, d, x, nr, V[5000010];
char parse[Dmax + 16], *now;

void Verif()
{
    if (*now == NULL)
    {
        fin.get(parse, Dmax, '\0');
        now = parse;
    }
}

int Get()
{
    while (*now < '0' || *now > '9')
    {
        now++;
        Verif();
    }
    int number = 0;
    while (*now >= '0' && *now <= '9')
    {
        number = number * 10 + *now - '0';
        now++;
        Verif();
    }
    return number;
}

int main()
{
    now = parse;
    Verif();
    N = Get();
    while(N > 0)
    {
        d = Get(); x = Get();
        if (x)
        {
            for (int j = 1; j <= nr; j++)
                V[j] += d;
            for (int j = 1; j <= d; j++)
                V[++nr] = x++;
        }
        else
        {
            sort (V + 1, V + 1 + nr);
            for (int j = 1; j <= d; j++)
            {
                int mij = (nr + 1) / 2;
                if (nr & 1) fout << V[mij] + j << '\n';
                else fout << V[mij + 1] + j << '\n';
                nr -= mij;
            }
            for (int j = 1; j <= nr; j++)
                V[j] += d;
        }
        N -= d;
    }

    fout.close();
    return 0;
}