Cod sursă (job #118080)

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

/*void Verif()
{
    if (*now == NULL)
    {
        fin.get(parse, DIM, '\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()
{
    fin >> N;
    while(N > 0)
    {
        fin >> d >> x;
        if (x)
        {
            if (w)
            {
                for (int j = 1; j <= vf; j++)
                {
                    A[j].val += d;
                }
                vf++;
                A[vf].num = nr+d;
                A[vf].val = 0;
            }
            else
            {
                w = 1;
                A[vf].num = nr+d;
                A[vf].val = 0;
            }
            for (int j = 1; j <= d; j++)
                V[++nr] = x++;
        }
        else
        {
            if (w)
            {
                vf = 1;
                for (int j = 1; j <= nr; j++)
                {
                    V[j] += A[vf].val;
                    if (A[vf].num == j) vf++;
                }
                vf = 1;
            }
            w = 0;
            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;
}