Pagini recente »
Atașamentele paginii Clasament 2024-02-09-clasa-5-tema-25
|
Diferențe pentru runda/adunare între reviziile 16 și 46
|
Istoria paginii runda/2020-01-19-test-7
|
Diferențe pentru runda/2014-03-11-clasa-78-tema-20 între reviziile 2 și 1
|
Cod sursă (job #118080)
Cod sursă (job
#118080)
#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;
}