Pagini recente » Cod sursa (job #2829808) | Cod sursa (job #2189421) | Cod sursa (job #2548571) | Cod sursa (job #343521) | Cod sursa (job #2178105)
#include <fstream>
using namespace std;
ifstream fin("ramen.in");
ofstream fout("ramen.out");
struct comanda
{
int st, dr, p, d;
} q[100001];
int n, d;
int b, e;
int sol[100001];
int main()
{
int t, p;
fin >> n >> d;
for (int i = 1; i <= n; i++)
{
bool ok = true;
fin >> t >> p;
if (e == 0)
{
q[e].st = t + d;
q[e].dr = t + d + p;
q[e].d = p;
q[e++].p = i;
}
else
{
for (int j = b; j < e && ok; j++)
{
if(q[j].st < t + d && q[j].st + p >= t && q[j].dr >= q[j].st + p)
{
int dest = q[j].d;
q[e].st = t + d;
q[e].dr = t + d + q[j].d;
q[e].d = dest;
q[e++].p = q[j].p;
q[j].dr = q[j].st + p;
q[j].p = i;
q[j].d = p;
ok = false;
}
}
if (ok)
{
q[e].st = t + d;
q[e].dr = t + d + p;
q[e].d = p;
q[e++].p = i;
}
}
}
for (int i = 0; i < n; i++)
sol[q[i].p] = q[i].dr;
for (int i = 1; i <= n; i++)
fout<< sol[i] << '\n';
return 0;
}